Skip to content

Commit 3548faf

Browse files
committed
Merge branch 'master' into swiftidentifier-refactor
2 parents a3ec094 + cc05978 commit 3548faf

File tree

8 files changed

+1334
-3233
lines changed

8 files changed

+1334
-3233
lines changed

R.swift.Library

R.swift/Generators/StoryboardGenerator.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -137,12 +137,12 @@ struct StoryboardGenerator: Generator {
137137
// Validation
138138
let validateImagesLines = Set(storyboard.usedImageIdentifiers)
139139
.map {
140-
"if UIImage(named: \"\($0)\") == nil { throw ValidationError(description: \"[R.swift] Image named '\($0)' is used in storyboard '\(storyboard.name)', but couldn't be loaded.\") }"
140+
"if UIImage(named: \"\($0)\") == nil { throw Rswift.ValidationError(description: \"[R.swift] Image named '\($0)' is used in storyboard '\(storyboard.name)', but couldn't be loaded.\") }"
141141
}
142142
let validateViewControllersLines = storyboard.viewControllers
143143
.flatMap { vc in
144144
vc.storyboardIdentifier.map {
145-
"if _R.storyboard.\(SwiftIdentifier(name: storyboard.name))().\(SwiftIdentifier(name: $0))() == nil { throw ValidationError(description:\"[R.swift] ViewController with identifier '\(SwiftIdentifier(name: $0))' could not be loaded from storyboard '\(storyboard.name)' as '\(vc.type)'.\") }"
145+
"if _R.storyboard.\(SwiftIdentifier(name: storyboard.name))().\(SwiftIdentifier(name: $0))() == nil { throw Rswift.ValidationError(description:\"[R.swift] ViewController with identifier '\(SwiftIdentifier(name: $0))' could not be loaded from storyboard '\(storyboard.name)' as '\(vc.type)'.\") }"
146146
}
147147
}
148148
let validateLines = validateImagesLines + validateViewControllersLines

R.swift/Generators/StringsGenerator.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ struct StringsGenerator: Generator {
168168
isStatic: true,
169169
name: SwiftIdentifier(name: values.key),
170170
typeDefinition: .Inferred(Type.StringResource),
171-
value: "StringResource(key: \"\(escapedKey)\", tableName: \"\(values.tableName)\", locales: [\(locales)])"
171+
value: "StringResource(key: \"\(escapedKey)\", tableName: \"\(values.tableName)\", bundle: _R.hostingBundle, locales: [\(locales)])"
172172
)
173173
}
174174

@@ -254,10 +254,10 @@ private struct StringValues {
254254
let escapedKey = key.escapedStringLiteral
255255

256256
if tableName == "Localizable" {
257-
return "NSLocalizedString(\"\(escapedKey)\", comment: \"\")"
257+
return "NSLocalizedString(\"\(escapedKey)\", bundle: _R.hostingBundle, comment: \"\")"
258258
}
259259
else {
260-
return "NSLocalizedString(\"\(escapedKey)\", tableName: \"\(tableName)\", comment: \"\")"
260+
return "NSLocalizedString(\"\(escapedKey)\", bundle: _R.hostingBundle, tableName: \"\(tableName)\", comment: \"\")"
261261
}
262262
}
263263

R.swift/ResourceTypes/Storyboard.swift

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ private class StoryboardParserDelegate: NSObject, NSXMLParserDelegate {
119119
var reusables: [Reusable] = []
120120

121121
// State
122-
var currentViewController: (String, Storyboard.ViewController)?
122+
var currentViewController: Storyboard.ViewController?
123123

124124
@objc func parser(parser: NSXMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String]) {
125125
switch elementName {
@@ -147,7 +147,7 @@ private class StoryboardParserDelegate: NSObject, NSXMLParserDelegate {
147147
let type = customType ?? Type._UIStoryboardSegue
148148

149149
let segue = Storyboard.Segue(identifier: segueIdentifier, type: type, destination: destination, kind: kind)
150-
currentViewController?.1.addSegue(segue)
150+
currentViewController?.addSegue(segue)
151151
}
152152

153153
case "image":
@@ -168,7 +168,7 @@ private class StoryboardParserDelegate: NSObject, NSXMLParserDelegate {
168168

169169
default:
170170
if let viewController = viewControllerFromAttributes(attributeDict, elementName: elementName) {
171-
currentViewController = (elementName, viewController)
171+
currentViewController = viewController
172172
}
173173

174174
if let reusable = reusableFromAttributes(attributeDict, elementName: elementName) {
@@ -178,9 +178,20 @@ private class StoryboardParserDelegate: NSObject, NSXMLParserDelegate {
178178
}
179179

180180
@objc func parser(parser: NSXMLParser, didEndElement elementName: String, namespaceURI: String?, qualifiedName qName: String?) {
181-
if let currentViewController = currentViewController where elementName == currentViewController.0 {
182-
viewControllers.append(currentViewController.1)
183-
self.currentViewController = nil
181+
182+
// We keep the current view controller open to collect segues until the closing scene:
183+
// <scene>
184+
// <viewController>
185+
// ...
186+
// <segue />
187+
// </viewController>
188+
// <segue />
189+
// </scene>
190+
if elementName == "scene" {
191+
if let currentViewController = currentViewController {
192+
viewControllers.append(currentViewController)
193+
self.currentViewController = nil
194+
}
184195
}
185196
}
186197

0 commit comments

Comments
 (0)