-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Extract parts of Environment.swift to separate files
- Loading branch information
Showing
5 changed files
with
88 additions
and
66 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
import Foundation | ||
|
||
internal extension Environment { | ||
static var defaultEnvironment: Environment { | ||
Environment() | ||
.withFacets(.defaults) | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
import Foundation | ||
|
||
struct EnvironmentModifier2D: Geometry2D { | ||
let body: Geometry2D | ||
let modification: (Environment) -> Environment | ||
|
||
func scadString(in environment: Environment) -> String { | ||
body.scadString(in: modification(environment)) | ||
} | ||
} | ||
|
||
struct EnvironmentModifier3D: Geometry3D { | ||
let body: Geometry3D | ||
let modification: (Environment) -> Environment | ||
|
||
func scadString(in environment: Environment) -> String { | ||
body.scadString(in: modification(environment)) | ||
} | ||
} | ||
|
||
public extension Geometry2D { | ||
func withEnvironment(_ modifier: @escaping (Environment) -> Environment) -> Geometry2D { | ||
EnvironmentModifier2D(body: self, modification: modifier) | ||
} | ||
|
||
internal func withEnvironment(_ environment: Environment) -> Geometry2D { | ||
withEnvironment { _ in environment } | ||
} | ||
} | ||
|
||
public extension Geometry3D { | ||
func withEnvironment(_ modifier: @escaping (Environment) -> Environment) -> Geometry3D { | ||
EnvironmentModifier3D(body: self, modification: modifier) | ||
} | ||
|
||
internal func withEnvironment(_ environment: Environment) -> Geometry3D { | ||
withEnvironment { _ in environment } | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
import Foundation | ||
|
||
internal struct EnvironmentReader2D: Geometry2D { | ||
let body: (Environment) -> Geometry2D | ||
|
||
func scadString(in environment: Environment) -> String { | ||
body(environment).scadString(in: environment) | ||
} | ||
} | ||
|
||
internal struct EnvironmentReader3D: Geometry3D { | ||
let body: (Environment) -> Geometry3D | ||
|
||
func scadString(in environment: Environment) -> String { | ||
body(environment).scadString(in: environment) | ||
} | ||
} | ||
|
||
internal func EnvironmentReader(@UnionBuilder2D body: @escaping (Environment) -> Geometry2D) -> Geometry2D { | ||
EnvironmentReader2D(body: body) | ||
} | ||
|
||
internal func EnvironmentReader(@UnionBuilder3D body: @escaping (Environment) -> Geometry3D) -> Geometry3D { | ||
EnvironmentReader3D(body: body) | ||
} | ||
|
||
public extension Geometry2D { | ||
func readingEnvironment(@UnionBuilder2D _ body: @escaping (Environment) -> Geometry2D) -> Geometry2D { | ||
EnvironmentReader2D(body: body) | ||
} | ||
} | ||
|
||
public extension Geometry3D { | ||
func readingEnvironment(@UnionBuilder3D _ body: @escaping (Environment) -> Geometry3D) -> Geometry3D { | ||
EnvironmentReader3D(body: body) | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters