From 646383d55b6a620200547eed597f1fab66227481 Mon Sep 17 00:00:00 2001 From: Roman Gardukevich Date: Wed, 28 Aug 2024 10:14:01 +0300 Subject: [PATCH] v3.0.0 --- 3.0.0/Enums.html | 429 +++++ 3.0.0/Enums/Consumer.html | 1284 +++++++++++++ 3.0.0/Enums/Consumer/Charset.html | 286 +++ 3.0.0/Enums/Consumer/Error.html | 412 ++++ 3.0.0/Enums/Consumer/Error/Kind.html | 337 ++++ 3.0.0/Enums/Consumer/Location.html | 411 ++++ 3.0.0/Enums/Consumer/Match.html | 411 ++++ 3.0.0/Enums/FeatureIdentifier.html | 732 +++++++ 3.0.0/Enums/GeoJSONObject.html | 608 ++++++ 3.0.0/Enums/Geometry.html | 877 +++++++++ 3.0.0/Enums/JSONValue.html | 1169 ++++++++++++ 3.0.0/Extensions.html | 442 +++++ 3.0.0/Extensions/CodingUserInfoKey.html | 276 +++ 3.0.0/Extensions/JSONArray.html | 336 ++++ 3.0.0/Extensions/JSONObject.html | 336 ++++ 3.0.0/Extensions/LocationCoordinate2D.html | 431 +++++ 3.0.0/Extensions/LocationDegrees.html | 310 +++ 3.0.0/Extensions/LocationDirection.html | 309 +++ 3.0.0/Functions.html | 306 +++ 3.0.0/Protocols.html | 361 ++++ 3.0.0/Protocols/ForeignMemberContainer.html | 279 +++ 3.0.0/Protocols/GeoJSONObjectConvertible.html | 277 +++ 3.0.0/Protocols/GeometryConvertible.html | 277 +++ 3.0.0/Protocols/WKTConvertible.html | 307 +++ 3.0.0/Structs.html | 657 +++++++ 3.0.0/Structs/BoundingBox.html | 571 ++++++ 3.0.0/Structs/Feature.html | 555 ++++++ 3.0.0/Structs/FeatureCollection.html | 444 +++++ 3.0.0/Structs/GeometryCollection.html | 556 ++++++ 3.0.0/Structs/LineString.html | 1012 ++++++++++ .../Structs/LineString/IndexedCoordinate.html | 337 ++++ 3.0.0/Structs/LocationCoordinate2D.html | 294 +++ 3.0.0/Structs/MultiLineString.html | 556 ++++++ 3.0.0/Structs/MultiPoint.html | 505 +++++ 3.0.0/Structs/MultiPolygon.html | 618 ++++++ 3.0.0/Structs/Point.html | 507 +++++ 3.0.0/Structs/Polygon.html | 1073 +++++++++++ 3.0.0/Structs/RadianCoordinate2D.html | 447 +++++ 3.0.0/Structs/Ring.html | 454 +++++ 3.0.0/Typealiases.html | 572 ++++++ 3.0.0/badge.svg | 28 + 3.0.0/css/highlight.css | 202 ++ 3.0.0/css/jazzy.css | 439 +++++ 3.0.0/docsets/Turf.docset/Contents/Info.plist | 22 + .../Contents/Resources/Documents/Enums.html | 429 +++++ .../Resources/Documents/Enums/Consumer.html | 1284 +++++++++++++ .../Documents/Enums/Consumer/Charset.html | 286 +++ .../Documents/Enums/Consumer/Error.html | 412 ++++ .../Documents/Enums/Consumer/Error/Kind.html | 337 ++++ .../Documents/Enums/Consumer/Location.html | 411 ++++ .../Documents/Enums/Consumer/Match.html | 411 ++++ .../Documents/Enums/FeatureIdentifier.html | 732 +++++++ .../Documents/Enums/GeoJSONObject.html | 608 ++++++ .../Resources/Documents/Enums/Geometry.html | 877 +++++++++ .../Resources/Documents/Enums/JSONValue.html | 1169 ++++++++++++ .../Resources/Documents/Extensions.html | 442 +++++ .../Extensions/CodingUserInfoKey.html | 276 +++ .../Documents/Extensions/JSONArray.html | 336 ++++ .../Documents/Extensions/JSONObject.html | 336 ++++ .../Extensions/LocationCoordinate2D.html | 431 +++++ .../Documents/Extensions/LocationDegrees.html | 310 +++ .../Extensions/LocationDirection.html | 309 +++ .../Resources/Documents/Functions.html | 306 +++ .../Resources/Documents/Protocols.html | 361 ++++ .../Protocols/ForeignMemberContainer.html | 279 +++ .../Protocols/GeoJSONObjectConvertible.html | 277 +++ .../Protocols/GeometryConvertible.html | 277 +++ .../Documents/Protocols/WKTConvertible.html | 307 +++ .../Contents/Resources/Documents/Structs.html | 657 +++++++ .../Documents/Structs/BoundingBox.html | 571 ++++++ .../Resources/Documents/Structs/Feature.html | 555 ++++++ .../Documents/Structs/FeatureCollection.html | 444 +++++ .../Documents/Structs/GeometryCollection.html | 556 ++++++ .../Documents/Structs/LineString.html | 1012 ++++++++++ .../Structs/LineString/IndexedCoordinate.html | 337 ++++ .../Structs/LocationCoordinate2D.html | 294 +++ .../Documents/Structs/MultiLineString.html | 556 ++++++ .../Documents/Structs/MultiPoint.html | 505 +++++ .../Documents/Structs/MultiPolygon.html | 618 ++++++ .../Resources/Documents/Structs/Point.html | 507 +++++ .../Resources/Documents/Structs/Polygon.html | 1073 +++++++++++ .../Documents/Structs/RadianCoordinate2D.html | 447 +++++ .../Resources/Documents/Structs/Ring.html | 454 +++++ .../Resources/Documents/Typealiases.html | 572 ++++++ .../Resources/Documents/css/highlight.css | 202 ++ .../Resources/Documents/css/jazzy.css | 439 +++++ .../Resources/Documents/img/carat.png | Bin 0 -> 274 bytes .../Contents/Resources/Documents/img/dash.png | Bin 0 -> 1338 bytes .../Contents/Resources/Documents/img/gh.png | Bin 0 -> 1571 bytes .../Resources/Documents/img/spinner.gif | Bin 0 -> 1849 bytes .../Contents/Resources/Documents/index.html | 465 +++++ .../Contents/Resources/Documents/js/jazzy.js | 74 + .../Resources/Documents/js/jazzy.search.js | 74 + .../Resources/Documents/js/jquery.min.js | 2 + .../Resources/Documents/js/lunr.min.js | 6 + .../Documents/js/typeahead.jquery.js | 1694 +++++++++++++++++ .../Contents/Resources/Documents/search.json | 1 + .../Contents/Resources/docSet.dsidx | Bin 0 -> 81920 bytes 3.0.0/docsets/Turf.tgz | Bin 0 -> 156610 bytes 3.0.0/docsets/Turf.xml | 1 + 3.0.0/img/carat.png | Bin 0 -> 274 bytes 3.0.0/img/dash.png | Bin 0 -> 1338 bytes 3.0.0/img/gh.png | Bin 0 -> 1571 bytes 3.0.0/img/spinner.gif | Bin 0 -> 1849 bytes 3.0.0/index.html | 465 +++++ 3.0.0/js/jazzy.js | 74 + 3.0.0/js/jazzy.search.js | 74 + 3.0.0/js/jquery.min.js | 2 + 3.0.0/js/lunr.min.js | 6 + 3.0.0/js/typeahead.jquery.js | 1694 +++++++++++++++++ 3.0.0/latest_version | 1 + 3.0.0/search.json | 1 + 3.0.0/undocumented.json | 362 ++++ index.html | 2 +- 114 files changed, 47051 insertions(+), 1 deletion(-) create mode 100644 3.0.0/Enums.html create mode 100644 3.0.0/Enums/Consumer.html create mode 100644 3.0.0/Enums/Consumer/Charset.html create mode 100644 3.0.0/Enums/Consumer/Error.html create mode 100644 3.0.0/Enums/Consumer/Error/Kind.html create mode 100644 3.0.0/Enums/Consumer/Location.html create mode 100644 3.0.0/Enums/Consumer/Match.html create mode 100644 3.0.0/Enums/FeatureIdentifier.html create mode 100644 3.0.0/Enums/GeoJSONObject.html create mode 100644 3.0.0/Enums/Geometry.html create mode 100644 3.0.0/Enums/JSONValue.html create mode 100644 3.0.0/Extensions.html create mode 100644 3.0.0/Extensions/CodingUserInfoKey.html create mode 100644 3.0.0/Extensions/JSONArray.html create mode 100644 3.0.0/Extensions/JSONObject.html create mode 100644 3.0.0/Extensions/LocationCoordinate2D.html create mode 100644 3.0.0/Extensions/LocationDegrees.html create mode 100644 3.0.0/Extensions/LocationDirection.html create mode 100644 3.0.0/Functions.html create mode 100644 3.0.0/Protocols.html create mode 100644 3.0.0/Protocols/ForeignMemberContainer.html create mode 100644 3.0.0/Protocols/GeoJSONObjectConvertible.html create mode 100644 3.0.0/Protocols/GeometryConvertible.html create mode 100644 3.0.0/Protocols/WKTConvertible.html create mode 100644 3.0.0/Structs.html create mode 100644 3.0.0/Structs/BoundingBox.html create mode 100644 3.0.0/Structs/Feature.html create mode 100644 3.0.0/Structs/FeatureCollection.html create mode 100644 3.0.0/Structs/GeometryCollection.html create mode 100644 3.0.0/Structs/LineString.html create mode 100644 3.0.0/Structs/LineString/IndexedCoordinate.html create mode 100644 3.0.0/Structs/LocationCoordinate2D.html create mode 100644 3.0.0/Structs/MultiLineString.html create mode 100644 3.0.0/Structs/MultiPoint.html create mode 100644 3.0.0/Structs/MultiPolygon.html create mode 100644 3.0.0/Structs/Point.html create mode 100644 3.0.0/Structs/Polygon.html create mode 100644 3.0.0/Structs/RadianCoordinate2D.html create mode 100644 3.0.0/Structs/Ring.html create mode 100644 3.0.0/Typealiases.html create mode 100644 3.0.0/badge.svg create mode 100644 3.0.0/css/highlight.css create mode 100644 3.0.0/css/jazzy.css create mode 100644 3.0.0/docsets/Turf.docset/Contents/Info.plist create mode 100644 3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Enums.html create mode 100644 3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Enums/Consumer.html create mode 100644 3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Enums/Consumer/Charset.html create mode 100644 3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Enums/Consumer/Error.html create mode 100644 3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Enums/Consumer/Error/Kind.html create mode 100644 3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Enums/Consumer/Location.html create mode 100644 3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Enums/Consumer/Match.html create mode 100644 3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Enums/FeatureIdentifier.html create mode 100644 3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Enums/GeoJSONObject.html create mode 100644 3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Enums/Geometry.html create mode 100644 3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Enums/JSONValue.html create mode 100644 3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Extensions.html create mode 100644 3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Extensions/CodingUserInfoKey.html create mode 100644 3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Extensions/JSONArray.html create mode 100644 3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Extensions/JSONObject.html create mode 100644 3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Extensions/LocationCoordinate2D.html create mode 100644 3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Extensions/LocationDegrees.html create mode 100644 3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Extensions/LocationDirection.html create mode 100644 3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Functions.html create mode 100644 3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Protocols.html create mode 100644 3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Protocols/ForeignMemberContainer.html create mode 100644 3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Protocols/GeoJSONObjectConvertible.html create mode 100644 3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Protocols/GeometryConvertible.html create mode 100644 3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Protocols/WKTConvertible.html create mode 100644 3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Structs.html create mode 100644 3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Structs/BoundingBox.html create mode 100644 3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Structs/Feature.html create mode 100644 3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Structs/FeatureCollection.html create mode 100644 3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Structs/GeometryCollection.html create mode 100644 3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Structs/LineString.html create mode 100644 3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Structs/LineString/IndexedCoordinate.html create mode 100644 3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Structs/LocationCoordinate2D.html create mode 100644 3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Structs/MultiLineString.html create mode 100644 3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Structs/MultiPoint.html create mode 100644 3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Structs/MultiPolygon.html create mode 100644 3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Structs/Point.html create mode 100644 3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Structs/Polygon.html create mode 100644 3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Structs/RadianCoordinate2D.html create mode 100644 3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Structs/Ring.html create mode 100644 3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Typealiases.html create mode 100644 3.0.0/docsets/Turf.docset/Contents/Resources/Documents/css/highlight.css create mode 100644 3.0.0/docsets/Turf.docset/Contents/Resources/Documents/css/jazzy.css create mode 100755 3.0.0/docsets/Turf.docset/Contents/Resources/Documents/img/carat.png create mode 100755 3.0.0/docsets/Turf.docset/Contents/Resources/Documents/img/dash.png create mode 100755 3.0.0/docsets/Turf.docset/Contents/Resources/Documents/img/gh.png create mode 100644 3.0.0/docsets/Turf.docset/Contents/Resources/Documents/img/spinner.gif create mode 100644 3.0.0/docsets/Turf.docset/Contents/Resources/Documents/index.html create mode 100755 3.0.0/docsets/Turf.docset/Contents/Resources/Documents/js/jazzy.js create mode 100644 3.0.0/docsets/Turf.docset/Contents/Resources/Documents/js/jazzy.search.js create mode 100644 3.0.0/docsets/Turf.docset/Contents/Resources/Documents/js/jquery.min.js create mode 100644 3.0.0/docsets/Turf.docset/Contents/Resources/Documents/js/lunr.min.js create mode 100644 3.0.0/docsets/Turf.docset/Contents/Resources/Documents/js/typeahead.jquery.js create mode 100644 3.0.0/docsets/Turf.docset/Contents/Resources/Documents/search.json create mode 100644 3.0.0/docsets/Turf.docset/Contents/Resources/docSet.dsidx create mode 100644 3.0.0/docsets/Turf.tgz create mode 100644 3.0.0/docsets/Turf.xml create mode 100755 3.0.0/img/carat.png create mode 100755 3.0.0/img/dash.png create mode 100755 3.0.0/img/gh.png create mode 100644 3.0.0/img/spinner.gif create mode 100644 3.0.0/index.html create mode 100755 3.0.0/js/jazzy.js create mode 100644 3.0.0/js/jazzy.search.js create mode 100644 3.0.0/js/jquery.min.js create mode 100644 3.0.0/js/lunr.min.js create mode 100644 3.0.0/js/typeahead.jquery.js create mode 100644 3.0.0/latest_version create mode 100644 3.0.0/search.json create mode 100644 3.0.0/undocumented.json diff --git a/3.0.0/Enums.html b/3.0.0/Enums.html new file mode 100644 index 00000000..4593058a --- /dev/null +++ b/3.0.0/Enums.html @@ -0,0 +1,429 @@ + + + + Enumerations Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

Enumerations

+

The following enumerations are available globally.

+ +
+
+
+
+ + +
+ +

Consumer +

+
+
+
    +
  • +
    + + + + Consumer + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public indirect enum Consumer<Label> : Equatable, Sendable where Label : Hashable, Label : Sendable
    +
    extension Consumer: ExpressibleByStringLiteral, ExpressibleByArrayLiteral
    +
    extension Consumer: CustomStringConvertible
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + FeatureIdentifier + +
    +
    +
    +
    +
    +
    +

    A feature identifier identifies a Feature object.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum FeatureIdentifier : Hashable, Sendable
    +
    extension FeatureIdentifier: RawRepresentable
    +
    extension FeatureIdentifier: ExpressibleByStringLiteral
    +
    extension FeatureIdentifier: ExpressibleByIntegerLiteral
    +
    extension FeatureIdentifier: ExpressibleByFloatLiteral
    +
    extension FeatureIdentifier: Codable
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + GeoJSONObject + +
    +
    +
    +
    +
    +
    +

    A GeoJSON object represents a Geometry, Feature, or collection of Features.

    +
    +

    Note

    + Foreign members which may be present inside are coded only if used JSONEncoder or JSONDecoder has userInfo[.includesForeignMembers] = true. + +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum GeoJSONObject : Equatable, Sendable
    +
    extension GeoJSONObject: Codable
    +
    extension GeoJSONObject: GeoJSONObjectConvertible
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + Geometry + +
    +
    +
    +
    +
    +
    +

    A Geometry object represents points, curves, and surfaces in coordinate space. Use an instance of this enumeration whenever a value could be any kind of Geometry object.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum Geometry : Equatable, Sendable
    +
    extension Geometry: GeoJSONObjectConvertible
    +
    extension Geometry: Codable
    +
    extension Geometry: GeometryConvertible
    +
    extension Geometry: WKTConvertible
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + JSONValue + +
    +
    +
    +
    +
    +
    +

    A JSON value represents an object, array, or fragment.

    + +

    This type does not represent the null value in JSON. Use Optional<JSONValue> wherever null is accepted.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum JSONValue : Hashable, Sendable
    +
    extension JSONValue: RawRepresentable
    +
    extension JSONValue: ExpressibleByStringLiteral
    +
    extension JSONValue: ExpressibleByIntegerLiteral
    +
    extension JSONValue: ExpressibleByFloatLiteral
    +
    extension JSONValue: ExpressibleByBooleanLiteral
    +
    extension JSONValue: ExpressibleByArrayLiteral
    +
    extension JSONValue: ExpressibleByDictionaryLiteral
    +
    extension JSONValue: Codable
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/3.0.0/Enums/Consumer.html b/3.0.0/Enums/Consumer.html new file mode 100644 index 00000000..e55c357b --- /dev/null +++ b/3.0.0/Enums/Consumer.html @@ -0,0 +1,1284 @@ + + + + Consumer Enumeration Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

Consumer

+
+
+ +
public indirect enum Consumer<Label> : Equatable, Sendable where Label : Hashable, Label : Sendable
+
extension Consumer: ExpressibleByStringLiteral, ExpressibleByArrayLiteral
+
extension Consumer: CustomStringConvertible
+ +
+
+

Undocumented

+ + +
+
+
+
    +
  • +
    + + + + string(_:) + +
    +
    +
    +
    +
    +
    +

    Primitives

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case string(String)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + charset(_:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case charset(Charset)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + any(_:) + +
    +
    +
    +
    +
    +
    +

    Combinators

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case any([Consumer])
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + sequence(_:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case sequence([Consumer])
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + optional(_:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case optional(Consumer)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + oneOrMore(_:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case oneOrMore(Consumer)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + not(_:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case not(Consumer)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + flatten(_:) + +
    +
    +
    +
    +
    +
    +

    Transforms

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case flatten(Consumer)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + discard(_:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case discard(Consumer)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + replace(_:_:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case replace(Consumer, String)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + label(_:_:) + +
    +
    +
    +
    +
    +
    +

    References

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case label(Label, Consumer)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + reference(_:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case reference(Label)
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ + +
+ +

Matching +

+
+
+
    +
  • +
    + + + + match(_:) + +
    +
    +
    +
    +
    +
    +

    Parse input and return matched result

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func match(_ input: String) throws -> Match
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + isOptional + +
    +
    +
    +
    +
    +
    +

    Will the consumer match empty input?

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var isOptional: Bool { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + Location + +
    +
    +
    +
    +
    +
    +

    Source location

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    struct Location : Equatable, Sendable
    +
    extension Consumer.Location: CustomStringConvertible
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + Match + +
    +
    +
    +
    +
    +
    +

    Abstract syntax tree returned by consumer

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    indirect enum Match : Equatable, Sendable
    +
    extension Consumer.Match: CustomStringConvertible
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + Charset + +
    +
    +
    +
    +
    +
    +

    Opaque type used for efficient character matching

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    struct Charset : Hashable, Sendable
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + Transform + +
    +
    +
    +
    +
    +
    +

    Closure for transforming a Match to an application-specific data type

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    typealias Transform = (_ name: Label, _ values: [Sendable]) throws -> (Sendable)?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + Error + +
    +
    +
    +
    +
    +
    +

    A Parsing error

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    struct Error : Swift.Error
    +
    extension Consumer.Error: CustomStringConvertible
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ + +
+ +

Syntax sugar +

+
+
+
    +
  • +
    + + + + init(stringLiteral:) + +
    +
    +
    +
    +
    +
    +

    Create .string() consumer from a string literal

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(stringLiteral: String)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(arrayLiteral:) + +
    +
    +
    +
    +
    +
    +

    Create .sequence() consumer from an array literal

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(arrayLiteral: Consumer...)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + |(_:_:) + +
    +
    +
    +
    +
    +
    +

    Converts two consumers into an .any() consumer

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func | (lhs: Consumer, rhs: Consumer) -> Consumer
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ + +
+ +

Character sets +

+
+
+
    +
  • +
    + + + + character(_:) + +
    +
    +
    +
    +
    +
    +

    Match a character

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    static func character(_ c: UnicodeScalar) -> Consumer
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + character(in:) + +
    +
    +
    +
    +
    +
    +

    Match character in range

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    static func character(in range: ClosedRange<UnicodeScalar>) -> Consumer
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + character(in:) + +
    +
    +
    +
    +
    +
    +

    Match character in string

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    static func character(in string: String) -> Consumer
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + character(in:) + +
    +
    +
    +
    +
    +
    +

    Match character in set

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    static func character(in set: CharacterSet) -> Consumer
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + anyCharacter(except:) + +
    +
    +
    +
    +
    +
    +

    Match any character except the one(s) specified

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    static func anyCharacter(except characters: UnicodeScalar...) -> Consumer
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + anyCharacter(except:) + +
    +
    +
    +
    +
    +
    +

    Match any character except the specified set

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    static func anyCharacter(except set: CharacterSet) -> Consumer
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ + +
+ +

Composite rules +

+
+
+
    +
  • +
    + + + + zeroOrMore(_:) + +
    +
    +
    +
    +
    +
    +

    Matches a list of zero or more consumer instances

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    static func zeroOrMore(_ consumer: Consumer) -> Consumer
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + interleaved(_:_:) + +
    +
    +
    +
    +
    +
    +

    Matches one or more consumer instances, separated by an instance of separator +This is useful for something like a comma-delimited list (without a trailing comma)

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    static func interleaved(_ consumer: Consumer, _ separator: Consumer) -> Consumer
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + ignore(_:in:) + +
    +
    +
    +
    +
    +
    +

    Matches the target consumer, ignoring any instances of the ignored consumer +This is useful for something like ignoring whitespace between tokens +Note: Instances of ignored inside flatten clauses will not be ignored

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    static func ignore(_ ignored: Consumer, in target: Consumer) -> Consumer
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ + +
+ +

Consumer implementation +

+
+
+
    +
  • +
    + + + + description + +
    +
    +
    +
    +
    +
    +

    Human-readable description of what consumer matches

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var description: String { get }
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/3.0.0/Enums/Consumer/Charset.html b/3.0.0/Enums/Consumer/Charset.html new file mode 100644 index 00000000..b34674ee --- /dev/null +++ b/3.0.0/Enums/Consumer/Charset.html @@ -0,0 +1,286 @@ + + + + Charset Structure Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

Charset

+
+
+ +
struct Charset : Hashable, Sendable
+ +
+
+

Opaque type used for efficient character matching

+ + +
+
+
+
+ + +
+ +

Charset implementation +

+
+
+
    +
  • +
    + + + + ranges + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var ranges: [CountableClosedRange<UInt32>] { get }
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/3.0.0/Enums/Consumer/Error.html b/3.0.0/Enums/Consumer/Error.html new file mode 100644 index 00000000..08615736 --- /dev/null +++ b/3.0.0/Enums/Consumer/Error.html @@ -0,0 +1,412 @@ + + + + Error Structure Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

Error

+
+
+ +
struct Error : Swift.Error
+
extension Consumer.Error: CustomStringConvertible
+ +
+
+

A Parsing error

+ + +
+
+
+
    +
  • +
    + + + + Kind + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public indirect enum Kind : Sendable
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + kind + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var kind: Kind
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + location + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var location: Location?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + remaining + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var remaining: Substring.UnicodeScalarView? { get }
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ + +
+ +

Error implementation +

+
+
+
    +
  • +
    + + + + description + +
    +
    +
    +
    +
    +
    +

    Human-readable error description

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var description: String { get }
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/3.0.0/Enums/Consumer/Error/Kind.html b/3.0.0/Enums/Consumer/Error/Kind.html new file mode 100644 index 00000000..6c18df0e --- /dev/null +++ b/3.0.0/Enums/Consumer/Error/Kind.html @@ -0,0 +1,337 @@ + + + + Kind Enumeration Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

Kind

+
+
+ +
public indirect enum Kind : Sendable
+ +
+
+

Undocumented

+ + +
+
+
+ +
+
+
+ +
+
+ + diff --git a/3.0.0/Enums/Consumer/Location.html b/3.0.0/Enums/Consumer/Location.html new file mode 100644 index 00000000..0c1e7553 --- /dev/null +++ b/3.0.0/Enums/Consumer/Location.html @@ -0,0 +1,411 @@ + + + + Location Structure Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

Location

+
+
+ +
struct Location : Equatable, Sendable
+
extension Consumer.Location: CustomStringConvertible
+ +
+
+

Source location

+ + +
+
+
+
    +
  • +
    + + + + range + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let range: Range<String.Index>
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + offset + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var offset: (line: Int, column: Int) { get }
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ + +
+ +

Location implementation +

+
+
+
    +
  • +
    + + + + description + +
    +
    +
    +
    +
    +
    +

    Human-readable description of the location

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var description: String { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + ==(_:_:) + +
    +
    +
    +
    +
    +
    +

    Equatable implementation

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func == (lhs: Consumer.Location, rhs: Consumer.Location) -> Bool
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + at(_:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func at(_ range: CountableRange<Int>) -> Consumer.Location
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/3.0.0/Enums/Consumer/Match.html b/3.0.0/Enums/Consumer/Match.html new file mode 100644 index 00000000..71ced2e7 --- /dev/null +++ b/3.0.0/Enums/Consumer/Match.html @@ -0,0 +1,411 @@ + + + + Match Enumeration Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

Match

+
+
+ +
indirect enum Match : Equatable, Sendable
+
extension Consumer.Match: CustomStringConvertible
+ +
+
+

Abstract syntax tree returned by consumer

+ + +
+
+
+
    +
  • +
    + + + + token(_:_:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case token(String, Location)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + node(_:_:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case node(Label?, [Match])
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + location + +
    +
    +
    +
    +
    +
    +

    The location of the match in the original source (if known)

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var location: Location? { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + transform(_:) + +
    +
    +
    +
    +
    +
    +

    Transform generic AST to application-specific form

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func transform(_ fn: Transform) rethrows -> Sendable?
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ + +
+ +

Match implementation +

+
+
+
    +
  • +
    + + + + description + +
    +
    +
    +
    +
    +
    +

    Lisp-like description of the AST

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var description: String { get }
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/3.0.0/Enums/FeatureIdentifier.html b/3.0.0/Enums/FeatureIdentifier.html new file mode 100644 index 00000000..eca7e4b3 --- /dev/null +++ b/3.0.0/Enums/FeatureIdentifier.html @@ -0,0 +1,732 @@ + + + + FeatureIdentifier Enumeration Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

FeatureIdentifier

+
+
+ +
public enum FeatureIdentifier : Hashable, Sendable
+
extension FeatureIdentifier: RawRepresentable
+
extension FeatureIdentifier: ExpressibleByStringLiteral
+
extension FeatureIdentifier: ExpressibleByIntegerLiteral
+
extension FeatureIdentifier: ExpressibleByFloatLiteral
+
extension FeatureIdentifier: Codable
+ +
+
+

A feature identifier identifies a Feature object.

+ + +
+
+
+
    +
  • +
    + + + + string(_:) + +
    +
    +
    +
    +
    +
    +

    A string.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case string(_: String)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + number(_:) + +
    +
    +
    +
    +
    +
    +

    A floating-point number.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case number(_: Double)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + number + + +
    +

    A floating-point number. JSON does not distinguish numeric types of different precisions. If you need integer precision, cast this associated value to an Int.

    +
    +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(_:) + +
    +
    +
    +
    +
    +
    +

    Initializes a feature identifier representing the given string.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(_ string: String)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(_:) + +
    +
    +
    +
    +
    +
    +

    Initializes a feature identifier representing the given integer.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init<Source>(_ number: Source) where Source : BinaryInteger
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + number + + +
    +

    An integer. JSON does not distinguish numeric types of different precisions, so the integer is stored as a floating-point number.

    +
    +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(_:) + +
    +
    +
    +
    +
    +
    +

    Initializes a feature identifier representing the given floating-point number.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init<Source>(_ number: Source) where Source : BinaryFloatingPoint
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + RawValue + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias RawValue = Any
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(rawValue:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init?(rawValue: Any)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + rawValue + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var rawValue: Any { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + string + +
    +
    +
    +
    +
    +
    +

    A string.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var string: String? { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + number + +
    +
    +
    +
    +
    +
    +

    A floating-point number.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var number: Double? { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(stringLiteral:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(stringLiteral value: StringLiteralType)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(integerLiteral:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(integerLiteral value: IntegerLiteralType)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(floatLiteral:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(floatLiteral value: FloatLiteralType)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(from:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(from decoder: Decoder) throws
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + encode(to:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func encode(to encoder: Encoder) throws
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/3.0.0/Enums/GeoJSONObject.html b/3.0.0/Enums/GeoJSONObject.html new file mode 100644 index 00000000..4b026bb2 --- /dev/null +++ b/3.0.0/Enums/GeoJSONObject.html @@ -0,0 +1,608 @@ + + + + GeoJSONObject Enumeration Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

GeoJSONObject

+
+
+ +
public enum GeoJSONObject : Equatable, Sendable
+
extension GeoJSONObject: Codable
+
extension GeoJSONObject: GeoJSONObjectConvertible
+ +
+
+

A GeoJSON object represents a Geometry, Feature, or collection of Features.

+
+

Note

+ Foreign members which may be present inside are coded only if used JSONEncoder or JSONDecoder has userInfo[.includesForeignMembers] = true. + +
+ + +
+
+
+
    +
  • +
    + + + + geometry(_:) + +
    +
    +
    +
    +
    +
    +

    A Geometry object represents points, curves, and surfaces in coordinate space.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case geometry(_: Geometry)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + geometry + + +
    +

    The GeoJSON object as a Geometry object.

    +
    +
    +
    + +
    +
    +
  • +
  • +
    + + + + feature(_:) + +
    +
    +
    +
    +
    +
    +

    A Feature object represents a spatially bounded thing.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case feature(_: Feature)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + feature + + +
    +

    The GeoJSON object as a Feature object.

    +
    +
    +
    + +
    +
    +
  • +
  • +
    + + + + featureCollection(_:) + +
    +
    +
    +
    +
    +
    +

    A FeatureCollection object is a collection of Feature objects.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case featureCollection(_: FeatureCollection)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + featureCollection + + +
    +

    The GeoJSON object as a FeatureCollection object.

    +
    +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(_:) + +
    +
    +
    +
    +
    +
    +

    Initializes a GeoJSON object representing the given GeoJSON object–convertible instance.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(_ object: GeoJSONObjectConvertible)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + geometry + +
    +
    +
    +
    +
    +
    +

    A geometry object.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var geometry: Geometry? { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + feature + +
    +
    +
    +
    +
    +
    +

    A feature object.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var feature: Feature? { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + featureCollection + +
    +
    +
    +
    +
    +
    +

    A feature collection object.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var featureCollection: FeatureCollection? { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(from:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(from decoder: Decoder) throws
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + encode(to:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func encode(to encoder: Encoder) throws
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + geoJSONObject + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var geoJSONObject: GeoJSONObject { get }
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/3.0.0/Enums/Geometry.html b/3.0.0/Enums/Geometry.html new file mode 100644 index 00000000..8ade4ab0 --- /dev/null +++ b/3.0.0/Enums/Geometry.html @@ -0,0 +1,877 @@ + + + + Geometry Enumeration Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

Geometry

+
+
+ +
public enum Geometry : Equatable, Sendable
+
extension Geometry: GeoJSONObjectConvertible
+
extension Geometry: Codable
+
extension Geometry: GeometryConvertible
+
extension Geometry: WKTConvertible
+ +
+
+

A Geometry object represents points, curves, and surfaces in coordinate space. Use an instance of this enumeration whenever a value could be any kind of Geometry object.

+ + +
+
+
+
    +
  • +
    + + + + point(_:) + +
    +
    +
    +
    +
    +
    +

    A single position.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case point(_: Point)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + lineString(_:) + +
    +
    +
    +
    +
    +
    +

    A collection of two or more positions, each position connected to the next position linearly.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case lineString(_: LineString)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + polygon(_:) + +
    +
    +
    +
    +
    +
    +

    Conceptually, a collection of Rings that form a single connected geometry.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case polygon(_: Polygon)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + multiPoint(_:) + +
    +
    +
    +
    +
    +
    +

    A collection of positions that are disconnected but related.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case multiPoint(_: MultiPoint)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + multiLineString(_:) + +
    +
    +
    +
    +
    +
    +

    A collection of LineString geometries that are disconnected but related.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case multiLineString(_: MultiLineString)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + multiPolygon(_:) + +
    +
    +
    +
    +
    +
    +

    A collection of Polygon geometries that are disconnected but related.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case multiPolygon(_: MultiPolygon)
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    A heterogeneous collection of geometries that are related.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case geometryCollection(_: GeometryCollection)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(_:) + +
    +
    +
    +
    +
    +
    +

    Initializes a geometry representing the given geometry–convertible instance.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(_ geometry: GeometryConvertible)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + geoJSONObject + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var geoJSONObject: GeoJSONObject { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(from:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(from decoder: Decoder) throws
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + encode(to:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func encode(to encoder: Encoder) throws
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + point + +
    +
    +
    +
    +
    +
    +

    A single position.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var point: Point? { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + lineString + +
    +
    +
    +
    +
    +
    +

    A collection of two or more positions, each position connected to the next position linearly.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var lineString: LineString? { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + polygon + +
    +
    +
    +
    +
    +
    +

    Conceptually, a collection of Rings that form a single connected geometry.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var polygon: Polygon? { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + multiPoint + +
    +
    +
    +
    +
    +
    +

    A collection of positions that are disconnected but related.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var multiPoint: MultiPoint? { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + multiLineString + +
    +
    +
    +
    +
    +
    +

    A collection of LineString geometries that are disconnected but related.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var multiLineString: MultiLineString? { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + multiPolygon + +
    +
    +
    +
    +
    +
    +

    A collection of Polygon geometries that are disconnected but related.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var multiPolygon: MultiPolygon? { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + geometryCollection + +
    +
    +
    +
    +
    +
    +

    A heterogeneous collection of geometries that are related.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var geometryCollection: GeometryCollection? { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + geometry + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var geometry: Geometry { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + wkt + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var wkt: String { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(wkt:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(wkt: String) throws
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/3.0.0/Enums/JSONValue.html b/3.0.0/Enums/JSONValue.html new file mode 100644 index 00000000..6305815a --- /dev/null +++ b/3.0.0/Enums/JSONValue.html @@ -0,0 +1,1169 @@ + + + + JSONValue Enumeration Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

JSONValue

+
+
+ +
public enum JSONValue : Hashable, Sendable
+
extension JSONValue: RawRepresentable
+
extension JSONValue: ExpressibleByStringLiteral
+
extension JSONValue: ExpressibleByIntegerLiteral
+
extension JSONValue: ExpressibleByFloatLiteral
+
extension JSONValue: ExpressibleByBooleanLiteral
+
extension JSONValue: ExpressibleByArrayLiteral
+
extension JSONValue: ExpressibleByDictionaryLiteral
+
extension JSONValue: Codable
+ +
+
+

A JSON value represents an object, array, or fragment.

+ +

This type does not represent the null value in JSON. Use Optional<JSONValue> wherever null is accepted.

+ + +
+
+
+
    +
  • +
    + + + + string(_:) + +
    +
    +
    +
    +
    +
    +

    A string.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case string(_: String)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + number(_:) + +
    +
    +
    +
    +
    +
    +

    A floating-point number.

    + +

    JSON does not distinguish numeric types of different precisions. If you need integer precision, cast the value to an Int.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case number(_: Double)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + boolean(_:) + +
    +
    +
    +
    +
    +
    +

    A Boolean value.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case boolean(_: Bool)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + array(_:) + +
    +
    +
    +
    +
    +
    +

    A heterogeneous array of JSON values and null values.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case array(_: JSONArray)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + object(_:) + +
    +
    +
    +
    +
    +
    +

    An object containing JSON values and null values keyed by strings.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case object(_: JSONObject)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(_:) + +
    +
    +
    +
    +
    +
    +

    Initializes a JSON value representing the given string.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(_ string: String)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(_:) + +
    +
    +
    +
    +
    +
    +

    Initializes a JSON value representing the given integer.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init<Source>(_ number: Source) where Source : BinaryInteger
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + number + + +
    +

    An integer. JSON does not distinguish numeric types of different precisions, so the integer is stored as a floating-point number.

    +
    +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(_:) + +
    +
    +
    +
    +
    +
    +

    Initializes a JSON value representing the given floating-point number.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init<Source>(_ number: Source) where Source : BinaryFloatingPoint
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(_:) + +
    +
    +
    +
    +
    +
    +

    Initializes a JSON value representing the given Boolean value.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(_ bool: Bool)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(_:) + +
    +
    +
    +
    +
    +
    +

    Initializes a JSON value representing the given JSON array.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(_ values: JSONArray)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(_:) + +
    +
    +
    +
    +
    +
    +

    Initializes a JSON value representing the given JSON object.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(_ properties: JSONObject)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + string + +
    +
    +
    +
    +
    +
    +

    A string value, if the JSON value represents a string.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var string: String? { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + number + +
    +
    +
    +
    +
    +
    +

    A floating-point number value, if the JSON value represents a number.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var number: Double? { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + boolean + +
    +
    +
    +
    +
    +
    +

    A Boolean value, if the JSON value represents a Boolean.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var boolean: Bool? { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + array + +
    +
    +
    +
    +
    +
    +

    An array of JSON values, if the JSON value represents an array.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var array: JSONArray? { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + object + +
    +
    +
    +
    +
    +
    +

    An object containing JSON values keyed by strings, if the JSON value represents an object.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var object: JSONObject? { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + RawValue + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias RawValue = Any
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(rawValue:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init?(rawValue: Any)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + rawValue + +
    +
    +
    +
    +
    +
    +

    This branch must happen after the NSNumber branch +to avoid converting NSNumber instances with values +0 and 1 but of objCType != ‘c’ to Bool since as? Bool +can succeed when the NSNumber’s value is 0 or 1 even +when its objCType is not ‘c’.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var rawValue: Any { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(stringLiteral:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(stringLiteral value: StringLiteralType)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(integerLiteral:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(integerLiteral value: IntegerLiteralType)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(floatLiteral:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(floatLiteral value: FloatLiteralType)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(booleanLiteral:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(booleanLiteral value: BooleanLiteralType)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + ArrayLiteralElement + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias ArrayLiteralElement = JSONValue?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(arrayLiteral:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(arrayLiteral elements: ArrayLiteralElement...)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + Key + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias Key = String
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + Value + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias Value = JSONValue?
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(dictionaryLiteral elements: (Key, Value)...)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(from:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(from decoder: Decoder) throws
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + encode(to:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func encode(to encoder: Encoder) throws
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/3.0.0/Extensions.html b/3.0.0/Extensions.html new file mode 100644 index 00000000..8ce2317e --- /dev/null +++ b/3.0.0/Extensions.html @@ -0,0 +1,442 @@ + + + + Extensions Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

Extensions

+

The following extensions are available globally.

+ +
+
+
+
+ + +
+ +

Error implementation +

+
+
+ +
+
+
+ +
+
+ + diff --git a/3.0.0/Extensions/CodingUserInfoKey.html b/3.0.0/Extensions/CodingUserInfoKey.html new file mode 100644 index 00000000..2222469d --- /dev/null +++ b/3.0.0/Extensions/CodingUserInfoKey.html @@ -0,0 +1,276 @@ + + + + CodingUserInfoKey Extension Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

CodingUserInfoKey

+
+
+ +
public extension CodingUserInfoKey
+ +
+
+

Key to pass to populate a userInfo dictionary, which is passed to the JSONDecoder or JSONEncoder to enable processing foreign members.

+ +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Indicates if coding of foreign members is enabled.

    + +

    Boolean flag to enable coding. Default (or missing) value is to ignore foreign members.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    static let includesForeignMembers: CodingUserInfoKey
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/3.0.0/Extensions/JSONArray.html b/3.0.0/Extensions/JSONArray.html new file mode 100644 index 00000000..d64223ea --- /dev/null +++ b/3.0.0/Extensions/JSONArray.html @@ -0,0 +1,336 @@ + + + + JSONArray Extension Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

JSONArray

+
+
+ +
extension JSONArray
+ +
+
+ + +
+
+
+ +
+
+
+ +
+
+ + diff --git a/3.0.0/Extensions/JSONObject.html b/3.0.0/Extensions/JSONObject.html new file mode 100644 index 00000000..ba53c04d --- /dev/null +++ b/3.0.0/Extensions/JSONObject.html @@ -0,0 +1,336 @@ + + + + JSONObject Extension Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

JSONObject

+
+
+ +
extension JSONObject
+ +
+
+ + +
+
+
+ +
+
+
+ +
+
+ + diff --git a/3.0.0/Extensions/LocationCoordinate2D.html b/3.0.0/Extensions/LocationCoordinate2D.html new file mode 100644 index 00000000..7d896d2c --- /dev/null +++ b/3.0.0/Extensions/LocationCoordinate2D.html @@ -0,0 +1,431 @@ + + + + LocationCoordinate2D Extension Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

LocationCoordinate2D

+
+
+ +
extension LocationCoordinate2D: Equatable
+ +
+
+ + +
+
+
+ +
+
+
+ +
+
+ + diff --git a/3.0.0/Extensions/LocationDegrees.html b/3.0.0/Extensions/LocationDegrees.html new file mode 100644 index 00000000..80284df8 --- /dev/null +++ b/3.0.0/Extensions/LocationDegrees.html @@ -0,0 +1,310 @@ + + + + LocationDegrees Extension Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

LocationDegrees

+
+
+ +
extension LocationDegrees
+ +
+
+ + +
+
+
+ +
+
+
+ +
+
+ + diff --git a/3.0.0/Extensions/LocationDirection.html b/3.0.0/Extensions/LocationDirection.html new file mode 100644 index 00000000..e30a3b86 --- /dev/null +++ b/3.0.0/Extensions/LocationDirection.html @@ -0,0 +1,309 @@ + + + + LocationDirection Extension Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

LocationDirection

+
+
+ +
extension LocationDirection
+ +
+
+ + +
+
+
+ +
+
+
+ +
+
+ + diff --git a/3.0.0/Functions.html b/3.0.0/Functions.html new file mode 100644 index 00000000..24b549fc --- /dev/null +++ b/3.0.0/Functions.html @@ -0,0 +1,306 @@ + + + + Functions Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

Functions

+

The following functions are available globally.

+ +
+
+
+ +
+
+
+ +
+
+ + diff --git a/3.0.0/Protocols.html b/3.0.0/Protocols.html new file mode 100644 index 00000000..c44589e3 --- /dev/null +++ b/3.0.0/Protocols.html @@ -0,0 +1,361 @@ + + + + Protocols Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

Protocols

+

The following protocols are available globally.

+ +
+
+
+ +
+
+
+ +
+
+ + diff --git a/3.0.0/Protocols/ForeignMemberContainer.html b/3.0.0/Protocols/ForeignMemberContainer.html new file mode 100644 index 00000000..da6de0fb --- /dev/null +++ b/3.0.0/Protocols/ForeignMemberContainer.html @@ -0,0 +1,279 @@ + + + + ForeignMemberContainer Protocol Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

ForeignMemberContainer

+
+
+ +
public protocol ForeignMemberContainer : Sendable
+ +
+
+

A GeoJSON object that can contain foreign members in arbitrary keys.

+ + +
+
+
+
    +
  • +
    + + + + foreignMembers + +
    +
    +
    +
    +
    +
    +

    Foreign members to round-trip to JSON.

    + +

    Members are coded only if used JSONEncoder or JSONDecoder has userInfo[.includesForeignMembers] = true.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var foreignMembers: JSONObject { get set }
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/3.0.0/Protocols/GeoJSONObjectConvertible.html b/3.0.0/Protocols/GeoJSONObjectConvertible.html new file mode 100644 index 00000000..eeaf351d --- /dev/null +++ b/3.0.0/Protocols/GeoJSONObjectConvertible.html @@ -0,0 +1,277 @@ + + + + GeoJSONObjectConvertible Protocol Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

GeoJSONObjectConvertible

+
+
+ +
public protocol GeoJSONObjectConvertible
+ +
+
+

A type that can be represented as a GeoJSONObject instance.

+ + +
+
+
+ +
+
+
+ +
+
+ + diff --git a/3.0.0/Protocols/GeometryConvertible.html b/3.0.0/Protocols/GeometryConvertible.html new file mode 100644 index 00000000..284a9cff --- /dev/null +++ b/3.0.0/Protocols/GeometryConvertible.html @@ -0,0 +1,277 @@ + + + + GeometryConvertible Protocol Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ + +
+ + diff --git a/3.0.0/Protocols/WKTConvertible.html b/3.0.0/Protocols/WKTConvertible.html new file mode 100644 index 00000000..7bf0014d --- /dev/null +++ b/3.0.0/Protocols/WKTConvertible.html @@ -0,0 +1,307 @@ + + + + WKTConvertible Protocol Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

WKTConvertible

+
+
+ +
public protocol WKTConvertible
+ +
+
+

Entity which can be converted to and from ‘Well Known Text’.

+ + +
+
+
+
    +
  • +
    + + + + wkt + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var wkt: String { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(wkt:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    init(wkt: String) throws
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/3.0.0/Structs.html b/3.0.0/Structs.html new file mode 100644 index 00000000..c0f5d297 --- /dev/null +++ b/3.0.0/Structs.html @@ -0,0 +1,657 @@ + + + + Structures Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

Structures

+

The following structures are available globally.

+ +
+
+
+ +
+
+
+ +
+
+ + diff --git a/3.0.0/Structs/BoundingBox.html b/3.0.0/Structs/BoundingBox.html new file mode 100644 index 00000000..bbed9774 --- /dev/null +++ b/3.0.0/Structs/BoundingBox.html @@ -0,0 +1,571 @@ + + + + BoundingBox Structure Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

BoundingBox

+
+
+ +
public struct BoundingBox : Sendable
+
extension BoundingBox: Hashable
+
extension BoundingBox: Codable
+ +
+
+

A bounding box indicates the extremes of a GeoJSONObject along the x- and y-axes (longitude and latitude, respectively).

+ + +
+
+
+
    +
  • +
    + + + + southWest + +
    +
    +
    +
    +
    +
    +

    The southwesternmost position contained in the bounding box.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var southWest: LocationCoordinate2D
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + northEast + +
    +
    +
    +
    +
    +
    +

    The northeasternmost position contained in the bounding box.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var northEast: LocationCoordinate2D
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(from:) + +
    +
    +
    +
    +
    +
    +

    Initializes the smallest bounding box that contains all the given coordinates.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init?(from coordinates: [LocationCoordinate2D]?)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + coordinates + + +
    +

    The coordinates to fit in the bounding box.

    +
    +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Initializes a bounding box defined by its southwesternmost and northeasternmost positions.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(southWest: LocationCoordinate2D, northEast: LocationCoordinate2D)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + southWest + + +
    +

    The southwesternmost position contained in the bounding box.

    +
    +
    + + northEast + + +
    +

    The northeasternmost position contained in the bounding box.

    +
    +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Returns a Boolean value indicating whether the bounding box contains the given position.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func contains(_ coordinate: LocationCoordinate2D, ignoreBoundary: Bool = true) -> Bool
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + coordinate + + +
    +

    The coordinate that may or may not be contained by the bounding box.

    +
    +
    + + ignoreBoundary + + +
    +

    A Boolean value indicating whether a position lying exactly on the edge of the bounding box should be considered to be contained in the bounding box.

    +
    +
    +
    +
    +

    Return Value

    +

    true if the bounding box contains the position; false otherwise.

    +
    + +
    +
    +
  • +
  • +
    + + + + hash(into:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func hash(into hasher: inout Hasher)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + encode(to:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func encode(to encoder: Encoder) throws
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(from:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(from decoder: Decoder) throws
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/3.0.0/Structs/Feature.html b/3.0.0/Structs/Feature.html new file mode 100644 index 00000000..441713f8 --- /dev/null +++ b/3.0.0/Structs/Feature.html @@ -0,0 +1,555 @@ + + + + Feature Structure Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

Feature

+
+
+ +
public struct Feature : Equatable, ForeignMemberContainer
+
extension Feature: Codable
+
extension Feature: GeoJSONObjectConvertible
+ +
+
+

A Feature object represents a spatially bounded thing.

+ + +
+
+
+
    +
  • +
    + + + + identifier + +
    +
    +
    +
    +
    +
    +

    A string or number that commonly identifies the feature in the context of a data set.

    + +

    Turf does not guarantee that the feature is unique; however, a data set may make such a guarantee.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var identifier: FeatureIdentifier?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + properties + +
    +
    +
    +
    +
    +
    +

    Arbitrary, JSON-compatible attributes to associate with the feature.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var properties: JSONObject?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + geometry + +
    +
    +
    +
    +
    +
    +

    The geometry at which the feature is located.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var geometry: Geometry?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + foreignMembers + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var foreignMembers: JSONObject
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(geometry:) + +
    +
    +
    +
    +
    +
    +

    Initializes a feature located at the given geometry.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(geometry: Geometry)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + geometry + + +
    +

    The geometry at which the feature is located.

    +
    +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(geometry:) + +
    +
    +
    +
    +
    +
    +

    Initializes a feature defined by the given geometry-convertible instance.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(geometry: GeometryConvertible?)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + geometry + + +
    +

    The geometry-convertible instance that bounds the feature.

    +
    +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(from:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(from decoder: Decoder) throws
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + encode(to:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func encode(to encoder: Encoder) throws
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + geoJSONObject + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var geoJSONObject: GeoJSONObject { get }
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/3.0.0/Structs/FeatureCollection.html b/3.0.0/Structs/FeatureCollection.html new file mode 100644 index 00000000..978748d9 --- /dev/null +++ b/3.0.0/Structs/FeatureCollection.html @@ -0,0 +1,444 @@ + + + + FeatureCollection Structure Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

FeatureCollection

+
+
+ +
public struct FeatureCollection : Equatable, ForeignMemberContainer
+
extension FeatureCollection: Codable
+
extension FeatureCollection: GeoJSONObjectConvertible
+ +
+
+

A FeatureCollection object is a collection of Feature objects.

+ + +
+
+
+
    +
  • +
    + + + + features + +
    +
    +
    +
    +
    +
    +

    The features that the collection contains.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var features: [Feature]
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + foreignMembers + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var foreignMembers: JSONObject
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(features:) + +
    +
    +
    +
    +
    +
    +

    Initializes a feature collection containing the given features.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(features: [Feature])
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + features + + +
    +

    The features that the collection contains.

    +
    +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(from:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(from decoder: Decoder) throws
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + encode(to:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func encode(to encoder: Encoder) throws
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + geoJSONObject + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var geoJSONObject: GeoJSONObject { get }
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/3.0.0/Structs/GeometryCollection.html b/3.0.0/Structs/GeometryCollection.html new file mode 100644 index 00000000..9aa704a3 --- /dev/null +++ b/3.0.0/Structs/GeometryCollection.html @@ -0,0 +1,556 @@ + + + + GeometryCollection Structure Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

GeometryCollection

+
+
+ +
public struct GeometryCollection : Equatable, ForeignMemberContainer, Sendable
+
extension GeometryCollection: Codable
+
extension GeometryCollection: GeometryConvertible
+
extension GeometryCollection: WKTConvertible
+ +
+
+

A GeometryCollection geometry is a heterogeneous collection of Geometry objects that are related.

+ + +
+
+
+
    +
  • +
    + + + + geometries + +
    +
    +
    +
    +
    +
    +

    The geometries contained by the geometry collection.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var geometries: [Geometry]
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + foreignMembers + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var foreignMembers: JSONObject
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(geometries:) + +
    +
    +
    +
    +
    +
    +

    Initializes a geometry collection defined by the given geometries.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(geometries: [Geometry])
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + geometries + + +
    +

    The geometries contained by the geometry collection.

    +
    +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(_:) + +
    +
    +
    +
    +
    +
    +

    Initializes a geometry collection coincident to the given multipolygon.

    + +

    You should only use this initializer if you intend to add geometries other than multipolygons to the geometry collection after initializing it.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(_ multiPolygon: MultiPolygon)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + multiPolygon + + +
    +

    The multipolygon that is coincident to the geometry collection.

    +
    +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(from:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(from decoder: Decoder) throws
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + encode(to:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func encode(to encoder: Encoder) throws
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + geometry + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var geometry: Geometry { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + wkt + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var wkt: String { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(wkt:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(wkt: String) throws
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/3.0.0/Structs/LineString.html b/3.0.0/Structs/LineString.html new file mode 100644 index 00000000..652251f6 --- /dev/null +++ b/3.0.0/Structs/LineString.html @@ -0,0 +1,1012 @@ + + + + LineString Structure Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

LineString

+
+
+ +
public struct LineString : Equatable, ForeignMemberContainer
+
extension LineString: Codable
+
extension LineString: GeometryConvertible
+
extension LineString: WKTConvertible
+ +
+
+

A LineString geometry is a collection of two or more positions, each position connected to the next position linearly.

+ + +
+
+
+
    +
  • +
    + + + + coordinates + +
    +
    +
    +
    +
    +
    +

    The positions at which the line string is located.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var coordinates: [LocationCoordinate2D]
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + foreignMembers + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var foreignMembers: JSONObject
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(_:) + +
    +
    +
    +
    +
    +
    +

    Initializes a line string defined by given positions.

    + +

    This initializer is equivalent to the lineString function in the turf-helpers package of Turf.js (source code).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(_ coordinates: [LocationCoordinate2D])
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + coordinates + + +
    +

    The positions at which the line string is located.

    +
    +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(_:) + +
    +
    +
    +
    +
    +
    +

    Initializes a line string coincident to the given linear ring.

    + +

    This initializer is roughly equivalent to the polygon-to-line package of Turf.js (source code), except that it accepts a linear ring instead of a full polygon.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(_ ring: Ring)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + ring + + +
    +

    The linear ring coincident to the line string.

    +
    +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(from:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(from decoder: Decoder) throws
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + encode(to:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func encode(to encoder: Encoder) throws
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Returns the line string transformed into an approximation of a curve by applying a Bézier spline algorithm.

    + +

    This method is equivalent to the turf-bezier-spline package of Turf.js (source code).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func bezier(resolution: Int = 10000, sharpness: Double = 0.85) -> LineString?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + trimmed(from:to:) + +
    +
    +
    +
    +
    +
    +

    Returns the portion of the line string that begins at the given start distance and extends the given stop distance along the line string.

    + +

    This method is equivalent to the turf-line-slice-along package of Turf.js (source code).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func trimmed(from startDistance: LocationDistance, to stopDistance: LocationDistance) -> LineString?
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Returns the portion of the line string that begins at the given coordinate and extends the given distance along the line string.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func trimmed(from coordinate: LocationCoordinate2D, distance: LocationDistance) -> LineString?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + IndexedCoordinate + +
    +
    +
    +
    +
    +
    +

    IndexedCoordinate is a coordinate with additional information such as the index from its position in the polyline and distance from the start of the polyline.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct IndexedCoordinate : Sendable
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Returns a coordinate along a line string at a certain distance from the start of the polyline.

    + +

    This method is equivalent to the turf-along package of Turf.js (source code).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func coordinateFromStart(distance: LocationDistance) -> LocationCoordinate2D?
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Returns an indexed coordinate along a line string at a certain distance from the start of the polyline.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func indexedCoordinateFromStart(distance: LocationDistance) -> IndexedCoordinate?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + distance(from:to:) + +
    +
    +
    +
    +
    +
    +

    Returns the distance along a slice of the line string with the given endpoints.

    + +

    If the start and end arguments are unspecified, this method is equivalent to the turf-length package of Turf.js (source code).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func distance(from start: LocationCoordinate2D? = nil, to end: LocationCoordinate2D? = nil) -> LocationDistance?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + sliced(from:to:) + +
    +
    +
    +
    +
    +
    +

    Returns a subset of the line string between two given coordinates.

    + +

    This method is equivalent to the turf-line-slice package of Turf.js (source code).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func sliced(from start: LocationCoordinate2D? = nil, to end: LocationCoordinate2D? = nil) -> LineString?
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Returns the geographic coordinate along the line string that is closest to the given coordinate as the crow flies.

    + +

    The returned coordinate may not correspond to one of the polyline’s vertices, but it always lies along the polyline.

    + +

    This method is equivalent to the turf-nearest-point-on-line package of Turf.js (source code).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func closestCoordinate(to coordinate: LocationCoordinate2D) -> IndexedCoordinate?
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Returns a copy of the line string simplified using the Ramer–Douglas–Peucker algorithm.

    + +

    This method is equivalent to the turf-simplify package of Turf.js (source code).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func simplified(tolerance: Double = 1.0, highestQuality: Bool = false) -> LineString
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + tolerance + + +
    +

    Controls the level of simplification by specifying the maximum allowed distance between the original line point and the simplified point. A higher tolerance value results in higher simplification.

    +
    +
    + + highestQuality + + +
    +

    Excludes the distance-based preprocessing step that leads to highest-quality simplification. High-quality simplification runs considerably slower, so consider how much precision is needed in your application.

    +
    +
    +
    +
    +

    Return Value

    +

    A simplified line string.

    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Simplifies the line string in place using the Ramer–Douglas–Peucker algorithm.

    + +

    This method is nearly equivalent to the turf-simplify package of Turf.js (source code), except that it mutates the line string it is called on.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public mutating func simplify(tolerance: Double = 1.0, highestQuality: Bool = false)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + tolerance + + +
    +

    Controls the level of simplification by specifying the maximum allowed distance between the original line point and the simplified point. A higher tolerance value results in higher simplification.

    +
    +
    + + highestQuality + + +
    +

    Excludes the distance-based preprocessing step that leads to highest-quality simplification. High-quality simplification runs considerably slower, so consider how much precision is needed in your application.

    +
    +
    +
    + +
    +
    +
  • +
  • +
    + + + + intersections(with:) + +
    +
    +
    +
    +
    +
    +

    Returns all intersections with another LineString.

    + +

    This function is roughly equivalent to the turf-line-intersect package of Turf.js (source code). Order of found intersections is not determined.

    + +

    You can also use Turf.intersection(_:, _:) if you need to find intersection of individual LineSegments.

    +
    +

    Seealso

    + Turf.intersection(_:, _:) + +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func intersections(with line: LineString) -> [LocationCoordinate2D]
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + geometry + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var geometry: Geometry { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + wkt + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var wkt: String { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(wkt:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(wkt: String) throws
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/3.0.0/Structs/LineString/IndexedCoordinate.html b/3.0.0/Structs/LineString/IndexedCoordinate.html new file mode 100644 index 00000000..ce4b3fed --- /dev/null +++ b/3.0.0/Structs/LineString/IndexedCoordinate.html @@ -0,0 +1,337 @@ + + + + IndexedCoordinate Structure Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

IndexedCoordinate

+
+
+ +
public struct IndexedCoordinate : Sendable
+ +
+
+

IndexedCoordinate is a coordinate with additional information such as the index from its position in the polyline and distance from the start of the polyline.

+ + +
+
+
+ +
+
+
+ +
+
+ + diff --git a/3.0.0/Structs/LocationCoordinate2D.html b/3.0.0/Structs/LocationCoordinate2D.html new file mode 100644 index 00000000..e322fe36 --- /dev/null +++ b/3.0.0/Structs/LocationCoordinate2D.html @@ -0,0 +1,294 @@ + + + + LocationCoordinate2D Structure Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

LocationCoordinate2D

+

A geographic coordinate with its components measured in degrees.

+ +
+
+
+
    +
  • +
    + + + + latitude + +
    +
    +
    +
    +
    +
    +

    The latitude in degrees.

    + +
    +
    +
    +
  • +
  • +
    + + + + longitude + +
    +
    +
    +
    +
    +
    +

    The longitude in degrees.

    + +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Creates a degree-based geographic coordinate.

    + +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/3.0.0/Structs/MultiLineString.html b/3.0.0/Structs/MultiLineString.html new file mode 100644 index 00000000..d0547039 --- /dev/null +++ b/3.0.0/Structs/MultiLineString.html @@ -0,0 +1,556 @@ + + + + MultiLineString Structure Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

MultiLineString

+
+
+ +
public struct MultiLineString : Equatable, ForeignMemberContainer
+
extension MultiLineString: Codable
+
extension MultiLineString: GeometryConvertible
+
extension MultiLineString: WKTConvertible
+ +
+
+

A MultiLineString geometry is a collection of LineString geometries that are disconnected but related.

+ + +
+
+
+
    +
  • +
    + + + + coordinates + +
    +
    +
    +
    +
    +
    +

    The positions at which the multi–line string is located. Each nested array corresponds to one line string.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var coordinates: [[LocationCoordinate2D]]
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + foreignMembers + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var foreignMembers: JSONObject
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(_:) + +
    +
    +
    +
    +
    +
    +

    Initializes a multi–line string defined by the given positions.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(_ coordinates: [[LocationCoordinate2D]])
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + coordinates + + +
    +

    The positions at which the multi–line string is located. Each nested array corresponds to one line string.

    +
    +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(_:) + +
    +
    +
    +
    +
    +
    +

    Initializes a multi–line string coincident to the given polygon’s linear rings.

    + +

    This initializer is equivalent to the polygon-to-line package of Turf.js (source code).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(_ polygon: Polygon)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + polygon + + +
    +

    The polygon whose linear rings are coincident to the multi–line string.

    +
    +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(from:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(from decoder: Decoder) throws
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + encode(to:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func encode(to encoder: Encoder) throws
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + geometry + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var geometry: Geometry { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + wkt + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var wkt: String { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(wkt:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(wkt: String) throws
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/3.0.0/Structs/MultiPoint.html b/3.0.0/Structs/MultiPoint.html new file mode 100644 index 00000000..4dd0aa13 --- /dev/null +++ b/3.0.0/Structs/MultiPoint.html @@ -0,0 +1,505 @@ + + + + MultiPoint Structure Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

MultiPoint

+
+
+ +
public struct MultiPoint : Equatable, ForeignMemberContainer
+
extension MultiPoint: Codable
+
extension MultiPoint: GeometryConvertible
+
extension MultiPoint: WKTConvertible
+ +
+
+

A MultiPoint geometry represents a collection of disconnected but related positions.

+ + +
+
+
+
    +
  • +
    + + + + coordinates + +
    +
    +
    +
    +
    +
    +

    The positions at which the multipoint is located.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var coordinates: [LocationCoordinate2D]
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + foreignMembers + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var foreignMembers: JSONObject
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(_:) + +
    +
    +
    +
    +
    +
    +

    Initializes a multipoint defined by the given positions.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(_ coordinates: [LocationCoordinate2D])
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + coordinates + + +
    +

    The positions at which the multipoint is located.

    +
    +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(from:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(from decoder: Decoder) throws
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + encode(to:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func encode(to encoder: Encoder) throws
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + geometry + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var geometry: Geometry { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + wkt + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var wkt: String { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(wkt:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(wkt: String) throws
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/3.0.0/Structs/MultiPolygon.html b/3.0.0/Structs/MultiPolygon.html new file mode 100644 index 00000000..87e41fbb --- /dev/null +++ b/3.0.0/Structs/MultiPolygon.html @@ -0,0 +1,618 @@ + + + + MultiPolygon Structure Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

MultiPolygon

+
+
+ +
public struct MultiPolygon : Equatable, ForeignMemberContainer
+
extension MultiPolygon: Codable
+
extension MultiPolygon: GeometryConvertible
+
extension MultiPolygon: WKTConvertible
+ +
+
+

A MultiPolygon geometry is a collection of Polygon geometries that are disconnected but related.

+ + +
+
+
+
    +
  • +
    + + + + coordinates + +
    +
    +
    +
    +
    +
    +

    The positions at which the multipolygon is located. Each nested array corresponds to one polygon.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var coordinates: [[[LocationCoordinate2D]]]
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + foreignMembers + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var foreignMembers: JSONObject
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + polygons + +
    +
    +
    +
    +
    +
    +

    The polygon geometries that conceptually form the multipolygon.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var polygons: [Polygon] { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(_:) + +
    +
    +
    +
    +
    +
    +

    Initializes a multipolygon defined by the given positions.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(_ coordinates: [[[LocationCoordinate2D]]])
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + coordinates + + +
    +

    The positions at which the multipolygon is located. Each nested array corresponds to one polygon.

    +
    +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(_:) + +
    +
    +
    +
    +
    +
    +

    Initializes a multipolygon coincident to the given polygons.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(_ polygons: [Polygon])
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + polygons + + +
    +

    The polygons that together are coincident to the multipolygon.

    +
    +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(from:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(from decoder: Decoder) throws
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + encode(to:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func encode(to encoder: Encoder) throws
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Determines if the given coordinate falls within any of the polygons. + The optional parameter ignoreBoundary will result in the method returning true if the given coordinate + lies on the boundary line of the polygon or its interior rings.

    + +

    Calls contains function for each contained polygon

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func contains(_ coordinate: LocationCoordinate2D, ignoreBoundary: Bool = false) -> Bool
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + geometry + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var geometry: Geometry { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + wkt + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var wkt: String { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(wkt:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(wkt: String) throws
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/3.0.0/Structs/Point.html b/3.0.0/Structs/Point.html new file mode 100644 index 00000000..76fadc02 --- /dev/null +++ b/3.0.0/Structs/Point.html @@ -0,0 +1,507 @@ + + + + Point Structure Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

Point

+
+
+ +
public struct Point : Equatable, ForeignMemberContainer, Sendable
+
extension Point: Codable
+
extension Point: GeometryConvertible
+
extension Point: WKTConvertible
+ +
+
+

A Point geometry represents a single position.

+ + +
+
+
+
    +
  • +
    + + + + coordinates + +
    +
    +
    +
    +
    +
    +

    The position at which the point is located.

    + +

    This property has a plural name for consistency with RFC 7946. For convenience, it is represented by a LocationCoordinate2D instead of a dedicated Position type.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var coordinates: LocationCoordinate2D
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + foreignMembers + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var foreignMembers: JSONObject
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(_:) + +
    +
    +
    +
    +
    +
    +

    Initializes a point defined by the given position.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(_ coordinates: LocationCoordinate2D)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + coordinates + + +
    +

    The position at which the point is located.

    +
    +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(from:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(from decoder: Decoder) throws
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + encode(to:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func encode(to encoder: Encoder) throws
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + geometry + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var geometry: Geometry { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + wkt + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var wkt: String { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(wkt:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(wkt: String) throws
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/3.0.0/Structs/Polygon.html b/3.0.0/Structs/Polygon.html new file mode 100644 index 00000000..b87f5391 --- /dev/null +++ b/3.0.0/Structs/Polygon.html @@ -0,0 +1,1073 @@ + + + + Polygon Structure Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

Polygon

+
+
+ +
public struct Polygon : Equatable, ForeignMemberContainer
+
extension Polygon: Codable
+
extension Polygon: GeometryConvertible
+
extension Polygon: WKTConvertible
+ +
+
+

A Polygon geometry is conceptually a collection of Rings that form a single connected geometry.

+ + +
+
+
+
    +
  • +
    + + + + coordinates + +
    +
    +
    +
    +
    +
    +

    The positions at which the polygon is located. Each nested array corresponds to one linear ring.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var coordinates: [[LocationCoordinate2D]]
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + foreignMembers + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var foreignMembers: JSONObject
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(_:) + +
    +
    +
    +
    +
    +
    +

    Initializes a polygon defined by the given positions.

    + +

    This initializer is equivalent to the polygon function in the turf-helpers package of Turf.js (source code).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(_ coordinates: [[LocationCoordinate2D]])
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + coordinates + + +
    +

    The positions at which the polygon is located. Each nested array corresponds to one linear ring.

    +
    +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Initializes a polygon defined by the given linear rings.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(outerRing: Ring, innerRings: [Ring] = [])
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + outerRing + + +
    +

    The outer linear ring.

    +
    +
    + + innerRings + + +
    +

    The inner linear rings that define “holes” in the polygon.

    +
    +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Initializes a polygon as a given center coordinate with a given number of +vertices, as a means to approximate a circle.

    + +

    This initializer is equivalent to the turf-circle package of Turf.js (source code).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(center: LocationCoordinate2D, radius: LocationDistance, vertices: Int)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + center + + +
    +

    The center coordinate for the polygon.

    +
    +
    + + radius + + +
    +

    The radius of the polygon, measured in meters.

    +
    +
    + + vertices + + +
    +

    The number of vertices the polygon will have. + The recommended amount is 64.

    +
    +
    +
    +
    +

    Return Value

    +

    A polygon shape which approximates a circle.

    +
    + +
    +
    +
  • +
  • +
    + + + + init(from:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(from decoder: Decoder) throws
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + encode(to:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func encode(to encoder: Encoder) throws
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + innerRings + +
    +
    +
    +
    +
    +
    +

    Representation of Polygons coordinates of inner rings

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var innerRings: [Ring] { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + outerRing + +
    +
    +
    +
    +
    +
    +

    Representation of Polygons coordinates of outer ring

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var outerRing: Ring { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + area + +
    +
    +
    +
    +
    +
    +

    The polygon’s area.

    + +

    This property is equivalent to the turf-area package of Turf.js (source code).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var area: Double { get }
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Returns whether the given coordinate falls within the polygon and outside of its interior rings.

    + +

    This method is equivalent to the turf-boolean-point-in-polygon package of Turf.js (source code).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func contains(_ coordinate: LocationCoordinate2D, ignoreBoundary: Bool = false) -> Bool
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + coordinate + + +
    +

    The coordinate to test for containment.

    +
    +
    + + ignoreBoundary + + +
    +

    Consider the coordinate to fall within the polygon even if it lies directly on one of the polygon’s linear rings.

    +
    +
    +
    +
    +

    Return Value

    +

    True if the coordinate falls within the polygon; false otherwise.

    +
    + +
    +
    +
  • +
  • +
    + + + + smooth(iterations:) + +
    +
    +
    +
    +
    +
    +

    Returns the polygon with corners smoothed out using Chaikin’s algorithm.

    + +

    This method is equivalent to the turf-polygon-smooth package of Turf.js (source code).

    +
    +

    Note

    + The returned polygon may be a degenerate polygon. + +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func smooth(iterations: Int = 3) -> Polygon
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Returns a copy of the polygon simplified using the Ramer–Douglas–Peucker algorithm.

    + +

    This method is equivalent to the turf-simplify package of Turf.js (source code).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func simplified(tolerance: Double = 1.0, highestQuality: Bool = false) -> Polygon
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + tolerance + + +
    +

    Controls the level of simplification by specifying the maximum allowed distance between the original line point and the simplified point. A higher tolerance value results in higher simplification.

    +
    +
    + + highestQuality + + +
    +

    Excludes the distance-based preprocessing step that leads to highest-quality simplification. High-quality simplification runs considerably slower, so consider how much precision is needed in your application.

    +
    +
    +
    +
    +

    Return Value

    +

    A simplified polygon.

    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Simplifies the polygon in place using the Ramer–Douglas–Peucker algorithm.

    + +

    This method is nearly equivalent to the turf-simplify package of Turf.js (source code), except that it mutates the polygon it is called on.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public mutating func simplify(tolerance: Double = 1.0, highestQuality: Bool = false)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + tolerance + + +
    +

    Controls the level of simplification by specifying the maximum allowed distance between the original line point and the simplified point. A higher tolerance value results in higher simplification.

    +
    +
    + + highestQuality + + +
    +

    Excludes the distance-based preprocessing step that leads to highest-quality simplification. High-quality simplification runs considerably slower, so consider how much precision is needed in your application.

    +
    +
    +
    + +
    +
    +
  • +
  • +
    + + + + center + +
    +
    +
    +
    +
    +
    +

    Calculates the absolute center of the bounding box.

    + +

    This property is equivalent to the turf-center package of Turf.js (source code).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var center: LocationCoordinate2D? { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + centroid + +
    +
    +
    +
    +
    +
    +

    Calculates the centroid using the mean of all vertices.

    + +

    Compared to center and centerOfMass, the centroid is less affected by small islands and artifacts.

    + +

    This property is equivalent to the turf-centroid package of Turf.js (source code).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var centroid: LocationCoordinate2D? { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + centerOfMass + +
    +
    +
    +
    +
    +
    +

    Calculates the center of mass using the centroid of polygon formula.

    + +

    This property is equivalent to the turf-center-of-mass package of Turf.js (source code).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var centerOfMass: LocationCoordinate2D? { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + geometry + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var geometry: Geometry { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + wkt + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var wkt: String { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(wkt:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(wkt: String) throws
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/3.0.0/Structs/RadianCoordinate2D.html b/3.0.0/Structs/RadianCoordinate2D.html new file mode 100644 index 00000000..7bcbff76 --- /dev/null +++ b/3.0.0/Structs/RadianCoordinate2D.html @@ -0,0 +1,447 @@ + + + + RadianCoordinate2D Structure Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

RadianCoordinate2D

+
+
+ +
public struct RadianCoordinate2D : Sendable
+ +
+
+

A coordinate pair measured in radians, as opposed to LocationCoordinate2D, which is measured in degrees of arc.

+ + +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Initializes a coordinate pair located at the given latitude and longitude.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(latitude: LocationRadians, longitude: LocationRadians)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + latitude + + +
    +

    The latitude measured in radians.

    +
    +
    + + longitude + + +
    +

    The longitude measured in radians.

    +
    +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(_:) + +
    +
    +
    +
    +
    +
    +

    Initializes a coordinate pair measured in radians that is coincident to the given coordinate pair measured in degrees of arc.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(_ degreeCoordinate: LocationCoordinate2D)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + degreeCoordinate + + +
    +

    A coordinate pair measured in degrees of arc.

    +
    +
    +
    + +
    +
    +
  • +
  • +
    + + + + direction(to:) + +
    +
    +
    +
    +
    +
    +

    Returns direction given two coordinates.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func direction(to coordinate: RadianCoordinate2D) -> Measurement<UnitAngle>
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Returns coordinate at a given distance and direction away from coordinate.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func coordinate(at distance: RadianDistance, facing direction: Measurement<UnitAngle>) -> RadianCoordinate2D
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + distance(to:) + +
    +
    +
    +
    +
    +
    +

    Returns the Haversine distance between two coordinates measured in radians.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func distance(to coordinate: RadianCoordinate2D) -> RadianDistance
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/3.0.0/Structs/Ring.html b/3.0.0/Structs/Ring.html new file mode 100644 index 00000000..57d60c66 --- /dev/null +++ b/3.0.0/Structs/Ring.html @@ -0,0 +1,454 @@ + + + + Ring Structure Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

Ring

+
+
+ +
public struct Ring : Sendable
+
extension Ring: Codable
+ +
+
+

A linear ring is a closed figure bounded by three or more straight line segments.

+ + +
+
+
+ +
+
+
+ +
+
+ + diff --git a/3.0.0/Typealiases.html b/3.0.0/Typealiases.html new file mode 100644 index 00000000..ed8bc534 --- /dev/null +++ b/3.0.0/Typealiases.html @@ -0,0 +1,572 @@ + + + + Type Aliases Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

Type Aliases

+

The following type aliases are available globally.

+ +
+
+
+
    +
  • +
    + + + + LocationDirection + +
    +
    +
    +
    +
    +
    +

    An azimuth measured in degrees clockwise from true north.

    + +

    This is a compatibility shim to keep the library’s public interface consistent between Apple and non-Apple platforms that lack Core Location. On Apple platforms, you can use CLLocationDirection anywhere you see this type.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias LocationDirection = CLLocationDirection
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + LocationDistance + +
    +
    +
    +
    +
    +
    +

    A distance in meters.

    + +

    This is a compatibility shim to keep the library’s public interface consistent between Apple and non-Apple platforms that lack Core Location. On Apple platforms, you can use CLLocationDistance anywhere you see this type.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias LocationDistance = CLLocationDistance
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + LocationDegrees + +
    +
    +
    +
    +
    +
    +

    A latitude or longitude in degrees.

    + +

    This is a compatibility shim to keep the library’s public interface consistent between Apple and non-Apple platforms that lack Core Location. On Apple platforms, you can use CLLocationDegrees anywhere you see this type.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias LocationDegrees = CLLocationDegrees
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + LocationCoordinate2D + +
    +
    +
    +
    +
    +
    +

    A geographic coordinate.

    + +

    This is a compatibility shim to keep the library’s public interface consistent between Apple and non-Apple platforms that lack Core Location. On Apple platforms, you can use CLLocationCoordinate2D anywhere you see this type.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias LocationCoordinate2D = CLLocationCoordinate2D
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + LocationDirection + +
    +
    +
    +
    +
    +
    +

    An azimuth measured in degrees clockwise from true north.

    + +
    +
    +
    +
  • +
  • +
    + + + + LocationDistance + +
    +
    +
    +
    +
    +
    +

    A distance in meters.

    + +
    +
    +
    +
  • +
  • +
    + + + + LocationDegrees + +
    +
    +
    +
    +
    +
    +

    A latitude or longitude in degrees.

    + +
    +
    +
    +
  • +
  • +
    + + + + JSONArray + +
    +
    +
    +
    +
    +
    +

    A JSON array of JSONValue instances.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias JSONArray = [JSONValue?]
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + JSONObject + +
    +
    +
    +
    +
    +
    +

    A JSON object represented in memory by a dictionary with strings as keys and JSONValue instances as values.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias JSONObject = [String : JSONValue?]
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + LocationRadians + +
    +
    +
    +
    +
    +
    +

    A latitude or longitude measured in radians, as opposed to LocationDegrees, which is measured in degrees of arc.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias LocationRadians = Double
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + RadianDistance + +
    +
    +
    +
    +
    +
    +

    A difference in latitude or longitude measured in radians, as opposed to CLLocationDegrees, which is used by some libraries to represent a similar distance measured in degrees of arc.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias RadianDistance = Double
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + LineSegment + +
    +
    +
    +
    +
    +
    +

    A segment between two positions in a LineString geometry or Ring.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias LineSegment = (LocationCoordinate2D, LocationCoordinate2D)
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/3.0.0/badge.svg b/3.0.0/badge.svg new file mode 100644 index 00000000..be498fa5 --- /dev/null +++ b/3.0.0/badge.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + documentation + + + documentation + + + 86% + + + 86% + + + diff --git a/3.0.0/css/highlight.css b/3.0.0/css/highlight.css new file mode 100644 index 00000000..c170357c --- /dev/null +++ b/3.0.0/css/highlight.css @@ -0,0 +1,202 @@ +/*! Jazzy - https://github.com/realm/jazzy + * Copyright Realm Inc. + * SPDX-License-Identifier: MIT + */ +/* Credit to https://gist.github.com/wataru420/2048287 */ +.highlight .c { + color: #999988; + font-style: italic; } + +.highlight .err { + color: #a61717; + background-color: #e3d2d2; } + +.highlight .k { + color: #000000; + font-weight: bold; } + +.highlight .o { + color: #000000; + font-weight: bold; } + +.highlight .cm { + color: #999988; + font-style: italic; } + +.highlight .cp { + color: #999999; + font-weight: bold; } + +.highlight .c1 { + color: #999988; + font-style: italic; } + +.highlight .cs { + color: #999999; + font-weight: bold; + font-style: italic; } + +.highlight .gd { + color: #000000; + background-color: #ffdddd; } + +.highlight .gd .x { + color: #000000; + background-color: #ffaaaa; } + +.highlight .ge { + color: #000000; + font-style: italic; } + +.highlight .gr { + color: #aa0000; } + +.highlight .gh { + color: #999999; } + +.highlight .gi { + color: #000000; + background-color: #ddffdd; } + +.highlight .gi .x { + color: #000000; + background-color: #aaffaa; } + +.highlight .go { + color: #888888; } + +.highlight .gp { + color: #555555; } + +.highlight .gs { + font-weight: bold; } + +.highlight .gu { + color: #aaaaaa; } + +.highlight .gt { + color: #aa0000; } + +.highlight .kc { + color: #000000; + font-weight: bold; } + +.highlight .kd { + color: #000000; + font-weight: bold; } + +.highlight .kp { + color: #000000; + font-weight: bold; } + +.highlight .kr { + color: #000000; + font-weight: bold; } + +.highlight .kt { + color: #445588; } + +.highlight .m { + color: #009999; } + +.highlight .s { + color: #d14; } + +.highlight .na { + color: #008080; } + +.highlight .nb { + color: #0086B3; } + +.highlight .nc { + color: #445588; + font-weight: bold; } + +.highlight .no { + color: #008080; } + +.highlight .ni { + color: #800080; } + +.highlight .ne { + color: #990000; + font-weight: bold; } + +.highlight .nf { + color: #990000; } + +.highlight .nn { + color: #555555; } + +.highlight .nt { + color: #000080; } + +.highlight .nv { + color: #008080; } + +.highlight .ow { + color: #000000; + font-weight: bold; } + +.highlight .w { + color: #bbbbbb; } + +.highlight .mf { + color: #009999; } + +.highlight .mh { + color: #009999; } + +.highlight .mi { + color: #009999; } + +.highlight .mo { + color: #009999; } + +.highlight .sb { + color: #d14; } + +.highlight .sc { + color: #d14; } + +.highlight .sd { + color: #d14; } + +.highlight .s2 { + color: #d14; } + +.highlight .se { + color: #d14; } + +.highlight .sh { + color: #d14; } + +.highlight .si { + color: #d14; } + +.highlight .sx { + color: #d14; } + +.highlight .sr { + color: #009926; } + +.highlight .s1 { + color: #d14; } + +.highlight .ss { + color: #990073; } + +.highlight .bp { + color: #999999; } + +.highlight .vc { + color: #008080; } + +.highlight .vg { + color: #008080; } + +.highlight .vi { + color: #008080; } + +.highlight .il { + color: #009999; } diff --git a/3.0.0/css/jazzy.css b/3.0.0/css/jazzy.css new file mode 100644 index 00000000..2e387139 --- /dev/null +++ b/3.0.0/css/jazzy.css @@ -0,0 +1,439 @@ +/*! Jazzy - https://github.com/realm/jazzy + * Copyright Realm Inc. + * SPDX-License-Identifier: MIT + */ +html, body, div, span, h1, h3, h4, p, a, code, em, img, ul, li, table, tbody, tr, td { + background: transparent; + border: 0; + margin: 0; + outline: 0; + padding: 0; + vertical-align: baseline; } + +body { + background-color: #f2f2f2; + font-family: Helvetica, freesans, Arial, sans-serif; + font-size: 14px; + -webkit-font-smoothing: subpixel-antialiased; + word-wrap: break-word; } + +h1, h2, h3 { + margin-top: 0.8em; + margin-bottom: 0.3em; + font-weight: 100; + color: black; } + +h1 { + font-size: 2.5em; } + +h2 { + font-size: 2em; + border-bottom: 1px solid #e2e2e2; } + +h4 { + font-size: 13px; + line-height: 1.5; + margin-top: 21px; } + +h5 { + font-size: 1.1em; } + +h6 { + font-size: 1.1em; + color: #777; } + +.section-name { + color: gray; + display: block; + font-family: Helvetica; + font-size: 22px; + font-weight: 100; + margin-bottom: 15px; } + +pre, code { + font: 0.95em Menlo, monospace; + color: #777; + word-wrap: normal; } + +p code, li code { + background-color: #eee; + padding: 2px 4px; + border-radius: 4px; } + +pre > code { + padding: 0; } + +a { + color: #0088cc; + text-decoration: none; } + a code { + color: inherit; } + +ul { + padding-left: 15px; } + +li { + line-height: 1.8em; } + +img { + max-width: 100%; } + +blockquote { + margin-left: 0; + padding: 0 10px; + border-left: 4px solid #ccc; } + +hr { + height: 1px; + border: none; + background-color: #e2e2e2; } + +.footnote-ref { + display: inline-block; + scroll-margin-top: 70px; } + +.footnote-def { + scroll-margin-top: 70px; } + +.content-wrapper { + margin: 0 auto; + width: 980px; } + +header { + font-size: 0.85em; + line-height: 32px; + background-color: #414141; + position: fixed; + width: 100%; + z-index: 3; } + header img { + padding-right: 6px; + vertical-align: -3px; + height: 16px; } + header a { + color: #fff; } + header p { + float: left; + color: #999; } + header .header-right { + float: right; + margin-left: 16px; } + +#breadcrumbs { + background-color: #f2f2f2; + height: 21px; + padding-top: 17px; + position: fixed; + width: 100%; + z-index: 2; + margin-top: 32px; } + #breadcrumbs #carat { + height: 10px; + margin: 0 5px; } + +.sidebar { + background-color: #f9f9f9; + border: 1px solid #e2e2e2; + overflow-y: auto; + overflow-x: hidden; + position: fixed; + top: 70px; + bottom: 0; + width: 230px; + word-wrap: normal; } + +.nav-groups { + list-style-type: none; + background: #fff; + padding-left: 0; } + +.nav-group-name { + border-bottom: 1px solid #e2e2e2; + font-size: 1.1em; + font-weight: 100; + padding: 15px 0 15px 20px; } + .nav-group-name > a { + color: #333; } + +.nav-group-tasks { + margin-top: 5px; } + +.nav-group-task { + font-size: 0.9em; + list-style-type: none; + white-space: nowrap; } + .nav-group-task a { + color: #888; } + +.main-content { + background-color: #fff; + border: 1px solid #e2e2e2; + margin-left: 246px; + position: absolute; + overflow: hidden; + padding-bottom: 20px; + top: 70px; + width: 734px; } + .main-content p, .main-content a, .main-content code, .main-content em, .main-content ul, .main-content table, .main-content blockquote { + margin-bottom: 1em; } + .main-content p { + line-height: 1.8em; } + .main-content section .section:first-child { + margin-top: 0; + padding-top: 0; } + .main-content section .task-group-section .task-group:first-of-type { + padding-top: 10px; } + .main-content section .task-group-section .task-group:first-of-type .section-name { + padding-top: 15px; } + .main-content section .heading:before { + content: ""; + display: block; + padding-top: 70px; + margin: -70px 0 0; } + .main-content .section-name p { + margin-bottom: inherit; + line-height: inherit; } + .main-content .section-name code { + background-color: inherit; + padding: inherit; + color: inherit; } + +.section { + padding: 0 25px; } + +.highlight { + background-color: #eee; + padding: 10px 12px; + border: 1px solid #e2e2e2; + border-radius: 4px; + overflow-x: auto; } + +.declaration .highlight { + overflow-x: initial; + padding: 0 40px 40px 0; + margin-bottom: -25px; + background-color: transparent; + border: none; } + +.section-name { + margin: 0; + margin-left: 18px; } + +.task-group-section { + margin-top: 10px; + padding-left: 6px; + border-top: 1px solid #e2e2e2; } + +.task-group { + padding-top: 0px; } + +.task-name-container a[name]:before { + content: ""; + display: block; + padding-top: 70px; + margin: -70px 0 0; } + +.section-name-container { + position: relative; + display: inline-block; } + .section-name-container .section-name-link { + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + margin-bottom: 0; } + .section-name-container .section-name { + position: relative; + pointer-events: none; + z-index: 1; } + .section-name-container .section-name a { + pointer-events: auto; } + +.item { + padding-top: 8px; + width: 100%; + list-style-type: none; } + .item a[name]:before { + content: ""; + display: block; + padding-top: 70px; + margin: -70px 0 0; } + .item code { + background-color: transparent; + padding: 0; } + .item .token, .item .direct-link { + display: inline-block; + text-indent: -20px; + padding-left: 3px; + margin-left: 35px; + font-size: 11.9px; + transition: all 300ms; } + .item .token-open { + margin-left: 20px; } + .item .discouraged { + text-decoration: line-through; } + .item .declaration-note { + font-size: .85em; + color: gray; + font-style: italic; } + +.pointer-container { + border-bottom: 1px solid #e2e2e2; + left: -23px; + padding-bottom: 13px; + position: relative; + width: 110%; } + +.pointer { + background: #f9f9f9; + border-left: 1px solid #e2e2e2; + border-top: 1px solid #e2e2e2; + height: 12px; + left: 21px; + top: -7px; + -webkit-transform: rotate(45deg); + -moz-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); + position: absolute; + width: 12px; } + +.height-container { + display: none; + left: -25px; + padding: 0 25px; + position: relative; + width: 100%; + overflow: hidden; } + .height-container .section { + background: #f9f9f9; + border-bottom: 1px solid #e2e2e2; + left: -25px; + position: relative; + width: 100%; + padding-top: 10px; + padding-bottom: 5px; } + +.aside, .language { + padding: 6px 12px; + margin: 12px 0; + border-left: 5px solid #dddddd; + overflow-y: hidden; } + .aside .aside-title, .language .aside-title { + font-size: 9px; + letter-spacing: 2px; + text-transform: uppercase; + padding-bottom: 0; + margin: 0; + color: #aaa; + -webkit-user-select: none; } + .aside p:last-child, .language p:last-child { + margin-bottom: 0; } + +.language { + border-left: 5px solid #cde9f4; } + .language .aside-title { + color: #4b8afb; } + +.aside-warning, .aside-deprecated, .aside-unavailable { + border-left: 5px solid #ff6666; } + .aside-warning .aside-title, .aside-deprecated .aside-title, .aside-unavailable .aside-title { + color: #ff0000; } + +.graybox { + border-collapse: collapse; + width: 100%; } + .graybox p { + margin: 0; + word-break: break-word; + min-width: 50px; } + .graybox td { + border: 1px solid #e2e2e2; + padding: 5px 25px 5px 10px; + vertical-align: middle; } + .graybox tr td:first-of-type { + text-align: right; + padding: 7px; + vertical-align: top; + word-break: normal; + width: 40px; } + +.slightly-smaller { + font-size: 0.9em; } + +#footer { + position: relative; + top: 10px; + bottom: 0px; + margin-left: 25px; } + #footer p { + margin: 0; + color: #aaa; + font-size: 0.8em; } + +html.dash header, html.dash #breadcrumbs, html.dash .sidebar { + display: none; } + +html.dash .main-content { + width: 980px; + margin-left: 0; + border: none; + width: 100%; + top: 0; + padding-bottom: 0; } + +html.dash .height-container { + display: block; } + +html.dash .item .token { + margin-left: 0; } + +html.dash .content-wrapper { + width: auto; } + +html.dash #footer { + position: static; } + +form[role=search] { + float: right; } + form[role=search] input { + font: Helvetica, freesans, Arial, sans-serif; + margin-top: 6px; + font-size: 13px; + line-height: 20px; + padding: 0px 10px; + border: none; + border-radius: 1em; } + .loading form[role=search] input { + background: white url(../img/spinner.gif) center right 4px no-repeat; } + form[role=search] .tt-menu { + margin: 0; + min-width: 300px; + background: #fff; + color: #333; + border: 1px solid #e2e2e2; + z-index: 4; } + form[role=search] .tt-highlight { + font-weight: bold; } + form[role=search] .tt-suggestion { + font: Helvetica, freesans, Arial, sans-serif; + font-size: 14px; + padding: 0 8px; } + form[role=search] .tt-suggestion span { + display: table-cell; + white-space: nowrap; } + form[role=search] .tt-suggestion .doc-parent-name { + width: 100%; + text-align: right; + font-weight: normal; + font-size: 0.9em; + padding-left: 16px; } + form[role=search] .tt-suggestion:hover, + form[role=search] .tt-suggestion.tt-cursor { + cursor: pointer; + background-color: #4183c4; + color: #fff; } + form[role=search] .tt-suggestion:hover .doc-parent-name, + form[role=search] .tt-suggestion.tt-cursor .doc-parent-name { + color: #fff; } diff --git a/3.0.0/docsets/Turf.docset/Contents/Info.plist b/3.0.0/docsets/Turf.docset/Contents/Info.plist new file mode 100644 index 00000000..af759e51 --- /dev/null +++ b/3.0.0/docsets/Turf.docset/Contents/Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleIdentifier + com.jazzy.turf + CFBundleName + Turf + DocSetPlatformFamily + turf + isDashDocset + + dashIndexFilePath + index.html + isJavaScriptEnabled + + DashDocSetFamily + dashtoc + DashDocSetFallbackURL + https://mapbox.github.io/turf-swift/3.0.0/ + + diff --git a/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Enums.html b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Enums.html new file mode 100644 index 00000000..4593058a --- /dev/null +++ b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Enums.html @@ -0,0 +1,429 @@ + + + + Enumerations Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

Enumerations

+

The following enumerations are available globally.

+ +
+
+
+
+ + +
+ +

Consumer +

+
+
+
    +
  • +
    + + + + Consumer + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public indirect enum Consumer<Label> : Equatable, Sendable where Label : Hashable, Label : Sendable
    +
    extension Consumer: ExpressibleByStringLiteral, ExpressibleByArrayLiteral
    +
    extension Consumer: CustomStringConvertible
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + FeatureIdentifier + +
    +
    +
    +
    +
    +
    +

    A feature identifier identifies a Feature object.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum FeatureIdentifier : Hashable, Sendable
    +
    extension FeatureIdentifier: RawRepresentable
    +
    extension FeatureIdentifier: ExpressibleByStringLiteral
    +
    extension FeatureIdentifier: ExpressibleByIntegerLiteral
    +
    extension FeatureIdentifier: ExpressibleByFloatLiteral
    +
    extension FeatureIdentifier: Codable
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + GeoJSONObject + +
    +
    +
    +
    +
    +
    +

    A GeoJSON object represents a Geometry, Feature, or collection of Features.

    +
    +

    Note

    + Foreign members which may be present inside are coded only if used JSONEncoder or JSONDecoder has userInfo[.includesForeignMembers] = true. + +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum GeoJSONObject : Equatable, Sendable
    +
    extension GeoJSONObject: Codable
    +
    extension GeoJSONObject: GeoJSONObjectConvertible
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + Geometry + +
    +
    +
    +
    +
    +
    +

    A Geometry object represents points, curves, and surfaces in coordinate space. Use an instance of this enumeration whenever a value could be any kind of Geometry object.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum Geometry : Equatable, Sendable
    +
    extension Geometry: GeoJSONObjectConvertible
    +
    extension Geometry: Codable
    +
    extension Geometry: GeometryConvertible
    +
    extension Geometry: WKTConvertible
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + JSONValue + +
    +
    +
    +
    +
    +
    +

    A JSON value represents an object, array, or fragment.

    + +

    This type does not represent the null value in JSON. Use Optional<JSONValue> wherever null is accepted.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum JSONValue : Hashable, Sendable
    +
    extension JSONValue: RawRepresentable
    +
    extension JSONValue: ExpressibleByStringLiteral
    +
    extension JSONValue: ExpressibleByIntegerLiteral
    +
    extension JSONValue: ExpressibleByFloatLiteral
    +
    extension JSONValue: ExpressibleByBooleanLiteral
    +
    extension JSONValue: ExpressibleByArrayLiteral
    +
    extension JSONValue: ExpressibleByDictionaryLiteral
    +
    extension JSONValue: Codable
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Enums/Consumer.html b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Enums/Consumer.html new file mode 100644 index 00000000..e55c357b --- /dev/null +++ b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Enums/Consumer.html @@ -0,0 +1,1284 @@ + + + + Consumer Enumeration Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

Consumer

+
+
+ +
public indirect enum Consumer<Label> : Equatable, Sendable where Label : Hashable, Label : Sendable
+
extension Consumer: ExpressibleByStringLiteral, ExpressibleByArrayLiteral
+
extension Consumer: CustomStringConvertible
+ +
+
+

Undocumented

+ + +
+
+
+
    +
  • +
    + + + + string(_:) + +
    +
    +
    +
    +
    +
    +

    Primitives

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case string(String)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + charset(_:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case charset(Charset)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + any(_:) + +
    +
    +
    +
    +
    +
    +

    Combinators

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case any([Consumer])
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + sequence(_:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case sequence([Consumer])
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + optional(_:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case optional(Consumer)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + oneOrMore(_:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case oneOrMore(Consumer)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + not(_:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case not(Consumer)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + flatten(_:) + +
    +
    +
    +
    +
    +
    +

    Transforms

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case flatten(Consumer)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + discard(_:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case discard(Consumer)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + replace(_:_:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case replace(Consumer, String)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + label(_:_:) + +
    +
    +
    +
    +
    +
    +

    References

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case label(Label, Consumer)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + reference(_:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case reference(Label)
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ + +
+ +

Matching +

+
+
+
    +
  • +
    + + + + match(_:) + +
    +
    +
    +
    +
    +
    +

    Parse input and return matched result

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func match(_ input: String) throws -> Match
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + isOptional + +
    +
    +
    +
    +
    +
    +

    Will the consumer match empty input?

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var isOptional: Bool { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + Location + +
    +
    +
    +
    +
    +
    +

    Source location

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    struct Location : Equatable, Sendable
    +
    extension Consumer.Location: CustomStringConvertible
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + Match + +
    +
    +
    +
    +
    +
    +

    Abstract syntax tree returned by consumer

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    indirect enum Match : Equatable, Sendable
    +
    extension Consumer.Match: CustomStringConvertible
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + Charset + +
    +
    +
    +
    +
    +
    +

    Opaque type used for efficient character matching

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    struct Charset : Hashable, Sendable
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + Transform + +
    +
    +
    +
    +
    +
    +

    Closure for transforming a Match to an application-specific data type

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    typealias Transform = (_ name: Label, _ values: [Sendable]) throws -> (Sendable)?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + Error + +
    +
    +
    +
    +
    +
    +

    A Parsing error

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    struct Error : Swift.Error
    +
    extension Consumer.Error: CustomStringConvertible
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ + +
+ +

Syntax sugar +

+
+
+
    +
  • +
    + + + + init(stringLiteral:) + +
    +
    +
    +
    +
    +
    +

    Create .string() consumer from a string literal

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(stringLiteral: String)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(arrayLiteral:) + +
    +
    +
    +
    +
    +
    +

    Create .sequence() consumer from an array literal

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(arrayLiteral: Consumer...)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + |(_:_:) + +
    +
    +
    +
    +
    +
    +

    Converts two consumers into an .any() consumer

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func | (lhs: Consumer, rhs: Consumer) -> Consumer
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ + +
+ +

Character sets +

+
+
+
    +
  • +
    + + + + character(_:) + +
    +
    +
    +
    +
    +
    +

    Match a character

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    static func character(_ c: UnicodeScalar) -> Consumer
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + character(in:) + +
    +
    +
    +
    +
    +
    +

    Match character in range

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    static func character(in range: ClosedRange<UnicodeScalar>) -> Consumer
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + character(in:) + +
    +
    +
    +
    +
    +
    +

    Match character in string

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    static func character(in string: String) -> Consumer
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + character(in:) + +
    +
    +
    +
    +
    +
    +

    Match character in set

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    static func character(in set: CharacterSet) -> Consumer
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + anyCharacter(except:) + +
    +
    +
    +
    +
    +
    +

    Match any character except the one(s) specified

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    static func anyCharacter(except characters: UnicodeScalar...) -> Consumer
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + anyCharacter(except:) + +
    +
    +
    +
    +
    +
    +

    Match any character except the specified set

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    static func anyCharacter(except set: CharacterSet) -> Consumer
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ + +
+ +

Composite rules +

+
+
+
    +
  • +
    + + + + zeroOrMore(_:) + +
    +
    +
    +
    +
    +
    +

    Matches a list of zero or more consumer instances

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    static func zeroOrMore(_ consumer: Consumer) -> Consumer
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + interleaved(_:_:) + +
    +
    +
    +
    +
    +
    +

    Matches one or more consumer instances, separated by an instance of separator +This is useful for something like a comma-delimited list (without a trailing comma)

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    static func interleaved(_ consumer: Consumer, _ separator: Consumer) -> Consumer
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + ignore(_:in:) + +
    +
    +
    +
    +
    +
    +

    Matches the target consumer, ignoring any instances of the ignored consumer +This is useful for something like ignoring whitespace between tokens +Note: Instances of ignored inside flatten clauses will not be ignored

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    static func ignore(_ ignored: Consumer, in target: Consumer) -> Consumer
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ + +
+ +

Consumer implementation +

+
+
+
    +
  • +
    + + + + description + +
    +
    +
    +
    +
    +
    +

    Human-readable description of what consumer matches

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var description: String { get }
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Enums/Consumer/Charset.html b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Enums/Consumer/Charset.html new file mode 100644 index 00000000..b34674ee --- /dev/null +++ b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Enums/Consumer/Charset.html @@ -0,0 +1,286 @@ + + + + Charset Structure Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

Charset

+
+
+ +
struct Charset : Hashable, Sendable
+ +
+
+

Opaque type used for efficient character matching

+ + +
+
+
+
+ + +
+ +

Charset implementation +

+
+
+
    +
  • +
    + + + + ranges + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var ranges: [CountableClosedRange<UInt32>] { get }
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Enums/Consumer/Error.html b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Enums/Consumer/Error.html new file mode 100644 index 00000000..08615736 --- /dev/null +++ b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Enums/Consumer/Error.html @@ -0,0 +1,412 @@ + + + + Error Structure Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

Error

+
+
+ +
struct Error : Swift.Error
+
extension Consumer.Error: CustomStringConvertible
+ +
+
+

A Parsing error

+ + +
+
+
+
    +
  • +
    + + + + Kind + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public indirect enum Kind : Sendable
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + kind + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var kind: Kind
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + location + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var location: Location?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + remaining + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var remaining: Substring.UnicodeScalarView? { get }
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ + +
+ +

Error implementation +

+
+
+
    +
  • +
    + + + + description + +
    +
    +
    +
    +
    +
    +

    Human-readable error description

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var description: String { get }
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Enums/Consumer/Error/Kind.html b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Enums/Consumer/Error/Kind.html new file mode 100644 index 00000000..6c18df0e --- /dev/null +++ b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Enums/Consumer/Error/Kind.html @@ -0,0 +1,337 @@ + + + + Kind Enumeration Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

Kind

+
+
+ +
public indirect enum Kind : Sendable
+ +
+
+

Undocumented

+ + +
+
+
+ +
+
+
+ +
+
+ + diff --git a/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Enums/Consumer/Location.html b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Enums/Consumer/Location.html new file mode 100644 index 00000000..0c1e7553 --- /dev/null +++ b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Enums/Consumer/Location.html @@ -0,0 +1,411 @@ + + + + Location Structure Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

Location

+
+
+ +
struct Location : Equatable, Sendable
+
extension Consumer.Location: CustomStringConvertible
+ +
+
+

Source location

+ + +
+
+
+
    +
  • +
    + + + + range + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let range: Range<String.Index>
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + offset + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var offset: (line: Int, column: Int) { get }
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ + +
+ +

Location implementation +

+
+
+
    +
  • +
    + + + + description + +
    +
    +
    +
    +
    +
    +

    Human-readable description of the location

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var description: String { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + ==(_:_:) + +
    +
    +
    +
    +
    +
    +

    Equatable implementation

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func == (lhs: Consumer.Location, rhs: Consumer.Location) -> Bool
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + at(_:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func at(_ range: CountableRange<Int>) -> Consumer.Location
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Enums/Consumer/Match.html b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Enums/Consumer/Match.html new file mode 100644 index 00000000..71ced2e7 --- /dev/null +++ b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Enums/Consumer/Match.html @@ -0,0 +1,411 @@ + + + + Match Enumeration Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

Match

+
+
+ +
indirect enum Match : Equatable, Sendable
+
extension Consumer.Match: CustomStringConvertible
+ +
+
+

Abstract syntax tree returned by consumer

+ + +
+
+
+
    +
  • +
    + + + + token(_:_:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case token(String, Location)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + node(_:_:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case node(Label?, [Match])
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + location + +
    +
    +
    +
    +
    +
    +

    The location of the match in the original source (if known)

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var location: Location? { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + transform(_:) + +
    +
    +
    +
    +
    +
    +

    Transform generic AST to application-specific form

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func transform(_ fn: Transform) rethrows -> Sendable?
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ + +
+ +

Match implementation +

+
+
+
    +
  • +
    + + + + description + +
    +
    +
    +
    +
    +
    +

    Lisp-like description of the AST

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var description: String { get }
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Enums/FeatureIdentifier.html b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Enums/FeatureIdentifier.html new file mode 100644 index 00000000..eca7e4b3 --- /dev/null +++ b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Enums/FeatureIdentifier.html @@ -0,0 +1,732 @@ + + + + FeatureIdentifier Enumeration Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

FeatureIdentifier

+
+
+ +
public enum FeatureIdentifier : Hashable, Sendable
+
extension FeatureIdentifier: RawRepresentable
+
extension FeatureIdentifier: ExpressibleByStringLiteral
+
extension FeatureIdentifier: ExpressibleByIntegerLiteral
+
extension FeatureIdentifier: ExpressibleByFloatLiteral
+
extension FeatureIdentifier: Codable
+ +
+
+

A feature identifier identifies a Feature object.

+ + +
+
+
+
    +
  • +
    + + + + string(_:) + +
    +
    +
    +
    +
    +
    +

    A string.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case string(_: String)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + number(_:) + +
    +
    +
    +
    +
    +
    +

    A floating-point number.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case number(_: Double)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + number + + +
    +

    A floating-point number. JSON does not distinguish numeric types of different precisions. If you need integer precision, cast this associated value to an Int.

    +
    +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(_:) + +
    +
    +
    +
    +
    +
    +

    Initializes a feature identifier representing the given string.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(_ string: String)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(_:) + +
    +
    +
    +
    +
    +
    +

    Initializes a feature identifier representing the given integer.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init<Source>(_ number: Source) where Source : BinaryInteger
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + number + + +
    +

    An integer. JSON does not distinguish numeric types of different precisions, so the integer is stored as a floating-point number.

    +
    +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(_:) + +
    +
    +
    +
    +
    +
    +

    Initializes a feature identifier representing the given floating-point number.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init<Source>(_ number: Source) where Source : BinaryFloatingPoint
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + RawValue + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias RawValue = Any
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(rawValue:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init?(rawValue: Any)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + rawValue + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var rawValue: Any { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + string + +
    +
    +
    +
    +
    +
    +

    A string.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var string: String? { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + number + +
    +
    +
    +
    +
    +
    +

    A floating-point number.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var number: Double? { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(stringLiteral:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(stringLiteral value: StringLiteralType)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(integerLiteral:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(integerLiteral value: IntegerLiteralType)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(floatLiteral:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(floatLiteral value: FloatLiteralType)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(from:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(from decoder: Decoder) throws
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + encode(to:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func encode(to encoder: Encoder) throws
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Enums/GeoJSONObject.html b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Enums/GeoJSONObject.html new file mode 100644 index 00000000..4b026bb2 --- /dev/null +++ b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Enums/GeoJSONObject.html @@ -0,0 +1,608 @@ + + + + GeoJSONObject Enumeration Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

GeoJSONObject

+
+
+ +
public enum GeoJSONObject : Equatable, Sendable
+
extension GeoJSONObject: Codable
+
extension GeoJSONObject: GeoJSONObjectConvertible
+ +
+
+

A GeoJSON object represents a Geometry, Feature, or collection of Features.

+
+

Note

+ Foreign members which may be present inside are coded only if used JSONEncoder or JSONDecoder has userInfo[.includesForeignMembers] = true. + +
+ + +
+
+
+
    +
  • +
    + + + + geometry(_:) + +
    +
    +
    +
    +
    +
    +

    A Geometry object represents points, curves, and surfaces in coordinate space.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case geometry(_: Geometry)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + geometry + + +
    +

    The GeoJSON object as a Geometry object.

    +
    +
    +
    + +
    +
    +
  • +
  • +
    + + + + feature(_:) + +
    +
    +
    +
    +
    +
    +

    A Feature object represents a spatially bounded thing.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case feature(_: Feature)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + feature + + +
    +

    The GeoJSON object as a Feature object.

    +
    +
    +
    + +
    +
    +
  • +
  • +
    + + + + featureCollection(_:) + +
    +
    +
    +
    +
    +
    +

    A FeatureCollection object is a collection of Feature objects.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case featureCollection(_: FeatureCollection)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + featureCollection + + +
    +

    The GeoJSON object as a FeatureCollection object.

    +
    +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(_:) + +
    +
    +
    +
    +
    +
    +

    Initializes a GeoJSON object representing the given GeoJSON object–convertible instance.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(_ object: GeoJSONObjectConvertible)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + geometry + +
    +
    +
    +
    +
    +
    +

    A geometry object.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var geometry: Geometry? { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + feature + +
    +
    +
    +
    +
    +
    +

    A feature object.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var feature: Feature? { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + featureCollection + +
    +
    +
    +
    +
    +
    +

    A feature collection object.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var featureCollection: FeatureCollection? { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(from:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(from decoder: Decoder) throws
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + encode(to:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func encode(to encoder: Encoder) throws
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + geoJSONObject + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var geoJSONObject: GeoJSONObject { get }
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Enums/Geometry.html b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Enums/Geometry.html new file mode 100644 index 00000000..8ade4ab0 --- /dev/null +++ b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Enums/Geometry.html @@ -0,0 +1,877 @@ + + + + Geometry Enumeration Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

Geometry

+
+
+ +
public enum Geometry : Equatable, Sendable
+
extension Geometry: GeoJSONObjectConvertible
+
extension Geometry: Codable
+
extension Geometry: GeometryConvertible
+
extension Geometry: WKTConvertible
+ +
+
+

A Geometry object represents points, curves, and surfaces in coordinate space. Use an instance of this enumeration whenever a value could be any kind of Geometry object.

+ + +
+
+
+
    +
  • +
    + + + + point(_:) + +
    +
    +
    +
    +
    +
    +

    A single position.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case point(_: Point)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + lineString(_:) + +
    +
    +
    +
    +
    +
    +

    A collection of two or more positions, each position connected to the next position linearly.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case lineString(_: LineString)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + polygon(_:) + +
    +
    +
    +
    +
    +
    +

    Conceptually, a collection of Rings that form a single connected geometry.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case polygon(_: Polygon)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + multiPoint(_:) + +
    +
    +
    +
    +
    +
    +

    A collection of positions that are disconnected but related.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case multiPoint(_: MultiPoint)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + multiLineString(_:) + +
    +
    +
    +
    +
    +
    +

    A collection of LineString geometries that are disconnected but related.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case multiLineString(_: MultiLineString)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + multiPolygon(_:) + +
    +
    +
    +
    +
    +
    +

    A collection of Polygon geometries that are disconnected but related.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case multiPolygon(_: MultiPolygon)
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    A heterogeneous collection of geometries that are related.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case geometryCollection(_: GeometryCollection)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(_:) + +
    +
    +
    +
    +
    +
    +

    Initializes a geometry representing the given geometry–convertible instance.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(_ geometry: GeometryConvertible)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + geoJSONObject + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var geoJSONObject: GeoJSONObject { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(from:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(from decoder: Decoder) throws
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + encode(to:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func encode(to encoder: Encoder) throws
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + point + +
    +
    +
    +
    +
    +
    +

    A single position.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var point: Point? { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + lineString + +
    +
    +
    +
    +
    +
    +

    A collection of two or more positions, each position connected to the next position linearly.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var lineString: LineString? { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + polygon + +
    +
    +
    +
    +
    +
    +

    Conceptually, a collection of Rings that form a single connected geometry.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var polygon: Polygon? { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + multiPoint + +
    +
    +
    +
    +
    +
    +

    A collection of positions that are disconnected but related.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var multiPoint: MultiPoint? { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + multiLineString + +
    +
    +
    +
    +
    +
    +

    A collection of LineString geometries that are disconnected but related.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var multiLineString: MultiLineString? { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + multiPolygon + +
    +
    +
    +
    +
    +
    +

    A collection of Polygon geometries that are disconnected but related.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var multiPolygon: MultiPolygon? { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + geometryCollection + +
    +
    +
    +
    +
    +
    +

    A heterogeneous collection of geometries that are related.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var geometryCollection: GeometryCollection? { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + geometry + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var geometry: Geometry { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + wkt + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var wkt: String { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(wkt:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(wkt: String) throws
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Enums/JSONValue.html b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Enums/JSONValue.html new file mode 100644 index 00000000..6305815a --- /dev/null +++ b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Enums/JSONValue.html @@ -0,0 +1,1169 @@ + + + + JSONValue Enumeration Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

JSONValue

+
+
+ +
public enum JSONValue : Hashable, Sendable
+
extension JSONValue: RawRepresentable
+
extension JSONValue: ExpressibleByStringLiteral
+
extension JSONValue: ExpressibleByIntegerLiteral
+
extension JSONValue: ExpressibleByFloatLiteral
+
extension JSONValue: ExpressibleByBooleanLiteral
+
extension JSONValue: ExpressibleByArrayLiteral
+
extension JSONValue: ExpressibleByDictionaryLiteral
+
extension JSONValue: Codable
+ +
+
+

A JSON value represents an object, array, or fragment.

+ +

This type does not represent the null value in JSON. Use Optional<JSONValue> wherever null is accepted.

+ + +
+
+
+
    +
  • +
    + + + + string(_:) + +
    +
    +
    +
    +
    +
    +

    A string.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case string(_: String)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + number(_:) + +
    +
    +
    +
    +
    +
    +

    A floating-point number.

    + +

    JSON does not distinguish numeric types of different precisions. If you need integer precision, cast the value to an Int.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case number(_: Double)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + boolean(_:) + +
    +
    +
    +
    +
    +
    +

    A Boolean value.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case boolean(_: Bool)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + array(_:) + +
    +
    +
    +
    +
    +
    +

    A heterogeneous array of JSON values and null values.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case array(_: JSONArray)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + object(_:) + +
    +
    +
    +
    +
    +
    +

    An object containing JSON values and null values keyed by strings.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case object(_: JSONObject)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(_:) + +
    +
    +
    +
    +
    +
    +

    Initializes a JSON value representing the given string.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(_ string: String)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(_:) + +
    +
    +
    +
    +
    +
    +

    Initializes a JSON value representing the given integer.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init<Source>(_ number: Source) where Source : BinaryInteger
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + number + + +
    +

    An integer. JSON does not distinguish numeric types of different precisions, so the integer is stored as a floating-point number.

    +
    +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(_:) + +
    +
    +
    +
    +
    +
    +

    Initializes a JSON value representing the given floating-point number.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init<Source>(_ number: Source) where Source : BinaryFloatingPoint
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(_:) + +
    +
    +
    +
    +
    +
    +

    Initializes a JSON value representing the given Boolean value.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(_ bool: Bool)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(_:) + +
    +
    +
    +
    +
    +
    +

    Initializes a JSON value representing the given JSON array.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(_ values: JSONArray)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(_:) + +
    +
    +
    +
    +
    +
    +

    Initializes a JSON value representing the given JSON object.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(_ properties: JSONObject)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + string + +
    +
    +
    +
    +
    +
    +

    A string value, if the JSON value represents a string.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var string: String? { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + number + +
    +
    +
    +
    +
    +
    +

    A floating-point number value, if the JSON value represents a number.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var number: Double? { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + boolean + +
    +
    +
    +
    +
    +
    +

    A Boolean value, if the JSON value represents a Boolean.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var boolean: Bool? { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + array + +
    +
    +
    +
    +
    +
    +

    An array of JSON values, if the JSON value represents an array.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var array: JSONArray? { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + object + +
    +
    +
    +
    +
    +
    +

    An object containing JSON values keyed by strings, if the JSON value represents an object.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var object: JSONObject? { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + RawValue + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias RawValue = Any
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(rawValue:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init?(rawValue: Any)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + rawValue + +
    +
    +
    +
    +
    +
    +

    This branch must happen after the NSNumber branch +to avoid converting NSNumber instances with values +0 and 1 but of objCType != ‘c’ to Bool since as? Bool +can succeed when the NSNumber’s value is 0 or 1 even +when its objCType is not ‘c’.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var rawValue: Any { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(stringLiteral:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(stringLiteral value: StringLiteralType)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(integerLiteral:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(integerLiteral value: IntegerLiteralType)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(floatLiteral:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(floatLiteral value: FloatLiteralType)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(booleanLiteral:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(booleanLiteral value: BooleanLiteralType)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + ArrayLiteralElement + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias ArrayLiteralElement = JSONValue?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(arrayLiteral:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(arrayLiteral elements: ArrayLiteralElement...)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + Key + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias Key = String
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + Value + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias Value = JSONValue?
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(dictionaryLiteral elements: (Key, Value)...)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(from:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(from decoder: Decoder) throws
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + encode(to:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func encode(to encoder: Encoder) throws
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Extensions.html b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Extensions.html new file mode 100644 index 00000000..8ce2317e --- /dev/null +++ b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Extensions.html @@ -0,0 +1,442 @@ + + + + Extensions Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

Extensions

+

The following extensions are available globally.

+ +
+
+
+
+ + +
+ +

Error implementation +

+
+
+ +
+
+
+ +
+
+ + diff --git a/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Extensions/CodingUserInfoKey.html b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Extensions/CodingUserInfoKey.html new file mode 100644 index 00000000..2222469d --- /dev/null +++ b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Extensions/CodingUserInfoKey.html @@ -0,0 +1,276 @@ + + + + CodingUserInfoKey Extension Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

CodingUserInfoKey

+
+
+ +
public extension CodingUserInfoKey
+ +
+
+

Key to pass to populate a userInfo dictionary, which is passed to the JSONDecoder or JSONEncoder to enable processing foreign members.

+ +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Indicates if coding of foreign members is enabled.

    + +

    Boolean flag to enable coding. Default (or missing) value is to ignore foreign members.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    static let includesForeignMembers: CodingUserInfoKey
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Extensions/JSONArray.html b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Extensions/JSONArray.html new file mode 100644 index 00000000..d64223ea --- /dev/null +++ b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Extensions/JSONArray.html @@ -0,0 +1,336 @@ + + + + JSONArray Extension Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

JSONArray

+
+
+ +
extension JSONArray
+ +
+
+ + +
+
+
+ +
+
+
+ +
+
+ + diff --git a/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Extensions/JSONObject.html b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Extensions/JSONObject.html new file mode 100644 index 00000000..ba53c04d --- /dev/null +++ b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Extensions/JSONObject.html @@ -0,0 +1,336 @@ + + + + JSONObject Extension Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

JSONObject

+
+
+ +
extension JSONObject
+ +
+
+ + +
+
+
+ +
+
+
+ +
+
+ + diff --git a/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Extensions/LocationCoordinate2D.html b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Extensions/LocationCoordinate2D.html new file mode 100644 index 00000000..7d896d2c --- /dev/null +++ b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Extensions/LocationCoordinate2D.html @@ -0,0 +1,431 @@ + + + + LocationCoordinate2D Extension Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

LocationCoordinate2D

+
+
+ +
extension LocationCoordinate2D: Equatable
+ +
+
+ + +
+
+
+ +
+
+
+ +
+
+ + diff --git a/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Extensions/LocationDegrees.html b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Extensions/LocationDegrees.html new file mode 100644 index 00000000..80284df8 --- /dev/null +++ b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Extensions/LocationDegrees.html @@ -0,0 +1,310 @@ + + + + LocationDegrees Extension Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

LocationDegrees

+
+
+ +
extension LocationDegrees
+ +
+
+ + +
+
+
+ +
+
+
+ +
+
+ + diff --git a/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Extensions/LocationDirection.html b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Extensions/LocationDirection.html new file mode 100644 index 00000000..e30a3b86 --- /dev/null +++ b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Extensions/LocationDirection.html @@ -0,0 +1,309 @@ + + + + LocationDirection Extension Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

LocationDirection

+
+
+ +
extension LocationDirection
+ +
+
+ + +
+
+
+ +
+
+
+ +
+
+ + diff --git a/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Functions.html b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Functions.html new file mode 100644 index 00000000..24b549fc --- /dev/null +++ b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Functions.html @@ -0,0 +1,306 @@ + + + + Functions Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

Functions

+

The following functions are available globally.

+ +
+
+
+ +
+
+
+ +
+
+ + diff --git a/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Protocols.html b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Protocols.html new file mode 100644 index 00000000..c44589e3 --- /dev/null +++ b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Protocols.html @@ -0,0 +1,361 @@ + + + + Protocols Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

Protocols

+

The following protocols are available globally.

+ +
+
+
+ +
+
+
+ +
+
+ + diff --git a/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Protocols/ForeignMemberContainer.html b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Protocols/ForeignMemberContainer.html new file mode 100644 index 00000000..da6de0fb --- /dev/null +++ b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Protocols/ForeignMemberContainer.html @@ -0,0 +1,279 @@ + + + + ForeignMemberContainer Protocol Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

ForeignMemberContainer

+
+
+ +
public protocol ForeignMemberContainer : Sendable
+ +
+
+

A GeoJSON object that can contain foreign members in arbitrary keys.

+ + +
+
+
+
    +
  • +
    + + + + foreignMembers + +
    +
    +
    +
    +
    +
    +

    Foreign members to round-trip to JSON.

    + +

    Members are coded only if used JSONEncoder or JSONDecoder has userInfo[.includesForeignMembers] = true.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var foreignMembers: JSONObject { get set }
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Protocols/GeoJSONObjectConvertible.html b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Protocols/GeoJSONObjectConvertible.html new file mode 100644 index 00000000..eeaf351d --- /dev/null +++ b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Protocols/GeoJSONObjectConvertible.html @@ -0,0 +1,277 @@ + + + + GeoJSONObjectConvertible Protocol Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

GeoJSONObjectConvertible

+
+
+ +
public protocol GeoJSONObjectConvertible
+ +
+
+

A type that can be represented as a GeoJSONObject instance.

+ + +
+
+
+ +
+
+
+ +
+
+ + diff --git a/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Protocols/GeometryConvertible.html b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Protocols/GeometryConvertible.html new file mode 100644 index 00000000..284a9cff --- /dev/null +++ b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Protocols/GeometryConvertible.html @@ -0,0 +1,277 @@ + + + + GeometryConvertible Protocol Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ + +
+ + diff --git a/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Protocols/WKTConvertible.html b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Protocols/WKTConvertible.html new file mode 100644 index 00000000..7bf0014d --- /dev/null +++ b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Protocols/WKTConvertible.html @@ -0,0 +1,307 @@ + + + + WKTConvertible Protocol Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

WKTConvertible

+
+
+ +
public protocol WKTConvertible
+ +
+
+

Entity which can be converted to and from ‘Well Known Text’.

+ + +
+
+
+
    +
  • +
    + + + + wkt + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var wkt: String { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(wkt:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    init(wkt: String) throws
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Structs.html b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Structs.html new file mode 100644 index 00000000..c0f5d297 --- /dev/null +++ b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Structs.html @@ -0,0 +1,657 @@ + + + + Structures Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

Structures

+

The following structures are available globally.

+ +
+
+
+ +
+
+
+ +
+
+ + diff --git a/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Structs/BoundingBox.html b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Structs/BoundingBox.html new file mode 100644 index 00000000..bbed9774 --- /dev/null +++ b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Structs/BoundingBox.html @@ -0,0 +1,571 @@ + + + + BoundingBox Structure Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

BoundingBox

+
+
+ +
public struct BoundingBox : Sendable
+
extension BoundingBox: Hashable
+
extension BoundingBox: Codable
+ +
+
+

A bounding box indicates the extremes of a GeoJSONObject along the x- and y-axes (longitude and latitude, respectively).

+ + +
+
+
+
    +
  • +
    + + + + southWest + +
    +
    +
    +
    +
    +
    +

    The southwesternmost position contained in the bounding box.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var southWest: LocationCoordinate2D
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + northEast + +
    +
    +
    +
    +
    +
    +

    The northeasternmost position contained in the bounding box.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var northEast: LocationCoordinate2D
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(from:) + +
    +
    +
    +
    +
    +
    +

    Initializes the smallest bounding box that contains all the given coordinates.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init?(from coordinates: [LocationCoordinate2D]?)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + coordinates + + +
    +

    The coordinates to fit in the bounding box.

    +
    +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Initializes a bounding box defined by its southwesternmost and northeasternmost positions.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(southWest: LocationCoordinate2D, northEast: LocationCoordinate2D)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + southWest + + +
    +

    The southwesternmost position contained in the bounding box.

    +
    +
    + + northEast + + +
    +

    The northeasternmost position contained in the bounding box.

    +
    +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Returns a Boolean value indicating whether the bounding box contains the given position.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func contains(_ coordinate: LocationCoordinate2D, ignoreBoundary: Bool = true) -> Bool
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + coordinate + + +
    +

    The coordinate that may or may not be contained by the bounding box.

    +
    +
    + + ignoreBoundary + + +
    +

    A Boolean value indicating whether a position lying exactly on the edge of the bounding box should be considered to be contained in the bounding box.

    +
    +
    +
    +
    +

    Return Value

    +

    true if the bounding box contains the position; false otherwise.

    +
    + +
    +
    +
  • +
  • +
    + + + + hash(into:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func hash(into hasher: inout Hasher)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + encode(to:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func encode(to encoder: Encoder) throws
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(from:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(from decoder: Decoder) throws
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Structs/Feature.html b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Structs/Feature.html new file mode 100644 index 00000000..441713f8 --- /dev/null +++ b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Structs/Feature.html @@ -0,0 +1,555 @@ + + + + Feature Structure Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

Feature

+
+
+ +
public struct Feature : Equatable, ForeignMemberContainer
+
extension Feature: Codable
+
extension Feature: GeoJSONObjectConvertible
+ +
+
+

A Feature object represents a spatially bounded thing.

+ + +
+
+
+
    +
  • +
    + + + + identifier + +
    +
    +
    +
    +
    +
    +

    A string or number that commonly identifies the feature in the context of a data set.

    + +

    Turf does not guarantee that the feature is unique; however, a data set may make such a guarantee.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var identifier: FeatureIdentifier?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + properties + +
    +
    +
    +
    +
    +
    +

    Arbitrary, JSON-compatible attributes to associate with the feature.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var properties: JSONObject?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + geometry + +
    +
    +
    +
    +
    +
    +

    The geometry at which the feature is located.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var geometry: Geometry?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + foreignMembers + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var foreignMembers: JSONObject
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(geometry:) + +
    +
    +
    +
    +
    +
    +

    Initializes a feature located at the given geometry.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(geometry: Geometry)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + geometry + + +
    +

    The geometry at which the feature is located.

    +
    +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(geometry:) + +
    +
    +
    +
    +
    +
    +

    Initializes a feature defined by the given geometry-convertible instance.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(geometry: GeometryConvertible?)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + geometry + + +
    +

    The geometry-convertible instance that bounds the feature.

    +
    +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(from:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(from decoder: Decoder) throws
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + encode(to:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func encode(to encoder: Encoder) throws
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + geoJSONObject + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var geoJSONObject: GeoJSONObject { get }
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Structs/FeatureCollection.html b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Structs/FeatureCollection.html new file mode 100644 index 00000000..978748d9 --- /dev/null +++ b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Structs/FeatureCollection.html @@ -0,0 +1,444 @@ + + + + FeatureCollection Structure Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

FeatureCollection

+
+
+ +
public struct FeatureCollection : Equatable, ForeignMemberContainer
+
extension FeatureCollection: Codable
+
extension FeatureCollection: GeoJSONObjectConvertible
+ +
+
+

A FeatureCollection object is a collection of Feature objects.

+ + +
+
+
+
    +
  • +
    + + + + features + +
    +
    +
    +
    +
    +
    +

    The features that the collection contains.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var features: [Feature]
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + foreignMembers + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var foreignMembers: JSONObject
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(features:) + +
    +
    +
    +
    +
    +
    +

    Initializes a feature collection containing the given features.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(features: [Feature])
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + features + + +
    +

    The features that the collection contains.

    +
    +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(from:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(from decoder: Decoder) throws
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + encode(to:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func encode(to encoder: Encoder) throws
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + geoJSONObject + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var geoJSONObject: GeoJSONObject { get }
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Structs/GeometryCollection.html b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Structs/GeometryCollection.html new file mode 100644 index 00000000..9aa704a3 --- /dev/null +++ b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Structs/GeometryCollection.html @@ -0,0 +1,556 @@ + + + + GeometryCollection Structure Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

GeometryCollection

+
+
+ +
public struct GeometryCollection : Equatable, ForeignMemberContainer, Sendable
+
extension GeometryCollection: Codable
+
extension GeometryCollection: GeometryConvertible
+
extension GeometryCollection: WKTConvertible
+ +
+
+

A GeometryCollection geometry is a heterogeneous collection of Geometry objects that are related.

+ + +
+
+
+
    +
  • +
    + + + + geometries + +
    +
    +
    +
    +
    +
    +

    The geometries contained by the geometry collection.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var geometries: [Geometry]
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + foreignMembers + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var foreignMembers: JSONObject
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(geometries:) + +
    +
    +
    +
    +
    +
    +

    Initializes a geometry collection defined by the given geometries.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(geometries: [Geometry])
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + geometries + + +
    +

    The geometries contained by the geometry collection.

    +
    +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(_:) + +
    +
    +
    +
    +
    +
    +

    Initializes a geometry collection coincident to the given multipolygon.

    + +

    You should only use this initializer if you intend to add geometries other than multipolygons to the geometry collection after initializing it.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(_ multiPolygon: MultiPolygon)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + multiPolygon + + +
    +

    The multipolygon that is coincident to the geometry collection.

    +
    +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(from:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(from decoder: Decoder) throws
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + encode(to:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func encode(to encoder: Encoder) throws
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + geometry + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var geometry: Geometry { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + wkt + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var wkt: String { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(wkt:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(wkt: String) throws
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Structs/LineString.html b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Structs/LineString.html new file mode 100644 index 00000000..652251f6 --- /dev/null +++ b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Structs/LineString.html @@ -0,0 +1,1012 @@ + + + + LineString Structure Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

LineString

+
+
+ +
public struct LineString : Equatable, ForeignMemberContainer
+
extension LineString: Codable
+
extension LineString: GeometryConvertible
+
extension LineString: WKTConvertible
+ +
+
+

A LineString geometry is a collection of two or more positions, each position connected to the next position linearly.

+ + +
+
+
+
    +
  • +
    + + + + coordinates + +
    +
    +
    +
    +
    +
    +

    The positions at which the line string is located.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var coordinates: [LocationCoordinate2D]
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + foreignMembers + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var foreignMembers: JSONObject
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(_:) + +
    +
    +
    +
    +
    +
    +

    Initializes a line string defined by given positions.

    + +

    This initializer is equivalent to the lineString function in the turf-helpers package of Turf.js (source code).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(_ coordinates: [LocationCoordinate2D])
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + coordinates + + +
    +

    The positions at which the line string is located.

    +
    +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(_:) + +
    +
    +
    +
    +
    +
    +

    Initializes a line string coincident to the given linear ring.

    + +

    This initializer is roughly equivalent to the polygon-to-line package of Turf.js (source code), except that it accepts a linear ring instead of a full polygon.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(_ ring: Ring)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + ring + + +
    +

    The linear ring coincident to the line string.

    +
    +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(from:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(from decoder: Decoder) throws
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + encode(to:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func encode(to encoder: Encoder) throws
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Returns the line string transformed into an approximation of a curve by applying a Bézier spline algorithm.

    + +

    This method is equivalent to the turf-bezier-spline package of Turf.js (source code).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func bezier(resolution: Int = 10000, sharpness: Double = 0.85) -> LineString?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + trimmed(from:to:) + +
    +
    +
    +
    +
    +
    +

    Returns the portion of the line string that begins at the given start distance and extends the given stop distance along the line string.

    + +

    This method is equivalent to the turf-line-slice-along package of Turf.js (source code).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func trimmed(from startDistance: LocationDistance, to stopDistance: LocationDistance) -> LineString?
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Returns the portion of the line string that begins at the given coordinate and extends the given distance along the line string.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func trimmed(from coordinate: LocationCoordinate2D, distance: LocationDistance) -> LineString?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + IndexedCoordinate + +
    +
    +
    +
    +
    +
    +

    IndexedCoordinate is a coordinate with additional information such as the index from its position in the polyline and distance from the start of the polyline.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct IndexedCoordinate : Sendable
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Returns a coordinate along a line string at a certain distance from the start of the polyline.

    + +

    This method is equivalent to the turf-along package of Turf.js (source code).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func coordinateFromStart(distance: LocationDistance) -> LocationCoordinate2D?
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Returns an indexed coordinate along a line string at a certain distance from the start of the polyline.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func indexedCoordinateFromStart(distance: LocationDistance) -> IndexedCoordinate?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + distance(from:to:) + +
    +
    +
    +
    +
    +
    +

    Returns the distance along a slice of the line string with the given endpoints.

    + +

    If the start and end arguments are unspecified, this method is equivalent to the turf-length package of Turf.js (source code).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func distance(from start: LocationCoordinate2D? = nil, to end: LocationCoordinate2D? = nil) -> LocationDistance?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + sliced(from:to:) + +
    +
    +
    +
    +
    +
    +

    Returns a subset of the line string between two given coordinates.

    + +

    This method is equivalent to the turf-line-slice package of Turf.js (source code).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func sliced(from start: LocationCoordinate2D? = nil, to end: LocationCoordinate2D? = nil) -> LineString?
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Returns the geographic coordinate along the line string that is closest to the given coordinate as the crow flies.

    + +

    The returned coordinate may not correspond to one of the polyline’s vertices, but it always lies along the polyline.

    + +

    This method is equivalent to the turf-nearest-point-on-line package of Turf.js (source code).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func closestCoordinate(to coordinate: LocationCoordinate2D) -> IndexedCoordinate?
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Returns a copy of the line string simplified using the Ramer–Douglas–Peucker algorithm.

    + +

    This method is equivalent to the turf-simplify package of Turf.js (source code).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func simplified(tolerance: Double = 1.0, highestQuality: Bool = false) -> LineString
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + tolerance + + +
    +

    Controls the level of simplification by specifying the maximum allowed distance between the original line point and the simplified point. A higher tolerance value results in higher simplification.

    +
    +
    + + highestQuality + + +
    +

    Excludes the distance-based preprocessing step that leads to highest-quality simplification. High-quality simplification runs considerably slower, so consider how much precision is needed in your application.

    +
    +
    +
    +
    +

    Return Value

    +

    A simplified line string.

    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Simplifies the line string in place using the Ramer–Douglas–Peucker algorithm.

    + +

    This method is nearly equivalent to the turf-simplify package of Turf.js (source code), except that it mutates the line string it is called on.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public mutating func simplify(tolerance: Double = 1.0, highestQuality: Bool = false)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + tolerance + + +
    +

    Controls the level of simplification by specifying the maximum allowed distance between the original line point and the simplified point. A higher tolerance value results in higher simplification.

    +
    +
    + + highestQuality + + +
    +

    Excludes the distance-based preprocessing step that leads to highest-quality simplification. High-quality simplification runs considerably slower, so consider how much precision is needed in your application.

    +
    +
    +
    + +
    +
    +
  • +
  • +
    + + + + intersections(with:) + +
    +
    +
    +
    +
    +
    +

    Returns all intersections with another LineString.

    + +

    This function is roughly equivalent to the turf-line-intersect package of Turf.js (source code). Order of found intersections is not determined.

    + +

    You can also use Turf.intersection(_:, _:) if you need to find intersection of individual LineSegments.

    +
    +

    Seealso

    + Turf.intersection(_:, _:) + +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func intersections(with line: LineString) -> [LocationCoordinate2D]
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + geometry + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var geometry: Geometry { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + wkt + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var wkt: String { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(wkt:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(wkt: String) throws
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Structs/LineString/IndexedCoordinate.html b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Structs/LineString/IndexedCoordinate.html new file mode 100644 index 00000000..ce4b3fed --- /dev/null +++ b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Structs/LineString/IndexedCoordinate.html @@ -0,0 +1,337 @@ + + + + IndexedCoordinate Structure Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

IndexedCoordinate

+
+
+ +
public struct IndexedCoordinate : Sendable
+ +
+
+

IndexedCoordinate is a coordinate with additional information such as the index from its position in the polyline and distance from the start of the polyline.

+ + +
+
+
+ +
+
+
+ +
+
+ + diff --git a/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Structs/LocationCoordinate2D.html b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Structs/LocationCoordinate2D.html new file mode 100644 index 00000000..e322fe36 --- /dev/null +++ b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Structs/LocationCoordinate2D.html @@ -0,0 +1,294 @@ + + + + LocationCoordinate2D Structure Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

LocationCoordinate2D

+

A geographic coordinate with its components measured in degrees.

+ +
+
+
+
    +
  • +
    + + + + latitude + +
    +
    +
    +
    +
    +
    +

    The latitude in degrees.

    + +
    +
    +
    +
  • +
  • +
    + + + + longitude + +
    +
    +
    +
    +
    +
    +

    The longitude in degrees.

    + +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Creates a degree-based geographic coordinate.

    + +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Structs/MultiLineString.html b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Structs/MultiLineString.html new file mode 100644 index 00000000..d0547039 --- /dev/null +++ b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Structs/MultiLineString.html @@ -0,0 +1,556 @@ + + + + MultiLineString Structure Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

MultiLineString

+
+
+ +
public struct MultiLineString : Equatable, ForeignMemberContainer
+
extension MultiLineString: Codable
+
extension MultiLineString: GeometryConvertible
+
extension MultiLineString: WKTConvertible
+ +
+
+

A MultiLineString geometry is a collection of LineString geometries that are disconnected but related.

+ + +
+
+
+
    +
  • +
    + + + + coordinates + +
    +
    +
    +
    +
    +
    +

    The positions at which the multi–line string is located. Each nested array corresponds to one line string.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var coordinates: [[LocationCoordinate2D]]
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + foreignMembers + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var foreignMembers: JSONObject
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(_:) + +
    +
    +
    +
    +
    +
    +

    Initializes a multi–line string defined by the given positions.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(_ coordinates: [[LocationCoordinate2D]])
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + coordinates + + +
    +

    The positions at which the multi–line string is located. Each nested array corresponds to one line string.

    +
    +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(_:) + +
    +
    +
    +
    +
    +
    +

    Initializes a multi–line string coincident to the given polygon’s linear rings.

    + +

    This initializer is equivalent to the polygon-to-line package of Turf.js (source code).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(_ polygon: Polygon)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + polygon + + +
    +

    The polygon whose linear rings are coincident to the multi–line string.

    +
    +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(from:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(from decoder: Decoder) throws
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + encode(to:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func encode(to encoder: Encoder) throws
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + geometry + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var geometry: Geometry { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + wkt + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var wkt: String { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(wkt:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(wkt: String) throws
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Structs/MultiPoint.html b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Structs/MultiPoint.html new file mode 100644 index 00000000..4dd0aa13 --- /dev/null +++ b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Structs/MultiPoint.html @@ -0,0 +1,505 @@ + + + + MultiPoint Structure Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

MultiPoint

+
+
+ +
public struct MultiPoint : Equatable, ForeignMemberContainer
+
extension MultiPoint: Codable
+
extension MultiPoint: GeometryConvertible
+
extension MultiPoint: WKTConvertible
+ +
+
+

A MultiPoint geometry represents a collection of disconnected but related positions.

+ + +
+
+
+
    +
  • +
    + + + + coordinates + +
    +
    +
    +
    +
    +
    +

    The positions at which the multipoint is located.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var coordinates: [LocationCoordinate2D]
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + foreignMembers + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var foreignMembers: JSONObject
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(_:) + +
    +
    +
    +
    +
    +
    +

    Initializes a multipoint defined by the given positions.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(_ coordinates: [LocationCoordinate2D])
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + coordinates + + +
    +

    The positions at which the multipoint is located.

    +
    +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(from:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(from decoder: Decoder) throws
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + encode(to:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func encode(to encoder: Encoder) throws
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + geometry + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var geometry: Geometry { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + wkt + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var wkt: String { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(wkt:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(wkt: String) throws
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Structs/MultiPolygon.html b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Structs/MultiPolygon.html new file mode 100644 index 00000000..87e41fbb --- /dev/null +++ b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Structs/MultiPolygon.html @@ -0,0 +1,618 @@ + + + + MultiPolygon Structure Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

MultiPolygon

+
+
+ +
public struct MultiPolygon : Equatable, ForeignMemberContainer
+
extension MultiPolygon: Codable
+
extension MultiPolygon: GeometryConvertible
+
extension MultiPolygon: WKTConvertible
+ +
+
+

A MultiPolygon geometry is a collection of Polygon geometries that are disconnected but related.

+ + +
+
+
+
    +
  • +
    + + + + coordinates + +
    +
    +
    +
    +
    +
    +

    The positions at which the multipolygon is located. Each nested array corresponds to one polygon.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var coordinates: [[[LocationCoordinate2D]]]
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + foreignMembers + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var foreignMembers: JSONObject
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + polygons + +
    +
    +
    +
    +
    +
    +

    The polygon geometries that conceptually form the multipolygon.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var polygons: [Polygon] { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(_:) + +
    +
    +
    +
    +
    +
    +

    Initializes a multipolygon defined by the given positions.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(_ coordinates: [[[LocationCoordinate2D]]])
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + coordinates + + +
    +

    The positions at which the multipolygon is located. Each nested array corresponds to one polygon.

    +
    +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(_:) + +
    +
    +
    +
    +
    +
    +

    Initializes a multipolygon coincident to the given polygons.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(_ polygons: [Polygon])
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + polygons + + +
    +

    The polygons that together are coincident to the multipolygon.

    +
    +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(from:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(from decoder: Decoder) throws
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + encode(to:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func encode(to encoder: Encoder) throws
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Determines if the given coordinate falls within any of the polygons. + The optional parameter ignoreBoundary will result in the method returning true if the given coordinate + lies on the boundary line of the polygon or its interior rings.

    + +

    Calls contains function for each contained polygon

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func contains(_ coordinate: LocationCoordinate2D, ignoreBoundary: Bool = false) -> Bool
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + geometry + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var geometry: Geometry { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + wkt + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var wkt: String { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(wkt:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(wkt: String) throws
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Structs/Point.html b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Structs/Point.html new file mode 100644 index 00000000..76fadc02 --- /dev/null +++ b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Structs/Point.html @@ -0,0 +1,507 @@ + + + + Point Structure Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

Point

+
+
+ +
public struct Point : Equatable, ForeignMemberContainer, Sendable
+
extension Point: Codable
+
extension Point: GeometryConvertible
+
extension Point: WKTConvertible
+ +
+
+

A Point geometry represents a single position.

+ + +
+
+
+
    +
  • +
    + + + + coordinates + +
    +
    +
    +
    +
    +
    +

    The position at which the point is located.

    + +

    This property has a plural name for consistency with RFC 7946. For convenience, it is represented by a LocationCoordinate2D instead of a dedicated Position type.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var coordinates: LocationCoordinate2D
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + foreignMembers + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var foreignMembers: JSONObject
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(_:) + +
    +
    +
    +
    +
    +
    +

    Initializes a point defined by the given position.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(_ coordinates: LocationCoordinate2D)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + coordinates + + +
    +

    The position at which the point is located.

    +
    +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(from:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(from decoder: Decoder) throws
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + encode(to:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func encode(to encoder: Encoder) throws
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + geometry + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var geometry: Geometry { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + wkt + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var wkt: String { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(wkt:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(wkt: String) throws
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Structs/Polygon.html b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Structs/Polygon.html new file mode 100644 index 00000000..b87f5391 --- /dev/null +++ b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Structs/Polygon.html @@ -0,0 +1,1073 @@ + + + + Polygon Structure Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

Polygon

+
+
+ +
public struct Polygon : Equatable, ForeignMemberContainer
+
extension Polygon: Codable
+
extension Polygon: GeometryConvertible
+
extension Polygon: WKTConvertible
+ +
+
+

A Polygon geometry is conceptually a collection of Rings that form a single connected geometry.

+ + +
+
+
+
    +
  • +
    + + + + coordinates + +
    +
    +
    +
    +
    +
    +

    The positions at which the polygon is located. Each nested array corresponds to one linear ring.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var coordinates: [[LocationCoordinate2D]]
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + foreignMembers + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var foreignMembers: JSONObject
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(_:) + +
    +
    +
    +
    +
    +
    +

    Initializes a polygon defined by the given positions.

    + +

    This initializer is equivalent to the polygon function in the turf-helpers package of Turf.js (source code).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(_ coordinates: [[LocationCoordinate2D]])
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + coordinates + + +
    +

    The positions at which the polygon is located. Each nested array corresponds to one linear ring.

    +
    +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Initializes a polygon defined by the given linear rings.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(outerRing: Ring, innerRings: [Ring] = [])
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + outerRing + + +
    +

    The outer linear ring.

    +
    +
    + + innerRings + + +
    +

    The inner linear rings that define “holes” in the polygon.

    +
    +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Initializes a polygon as a given center coordinate with a given number of +vertices, as a means to approximate a circle.

    + +

    This initializer is equivalent to the turf-circle package of Turf.js (source code).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(center: LocationCoordinate2D, radius: LocationDistance, vertices: Int)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + center + + +
    +

    The center coordinate for the polygon.

    +
    +
    + + radius + + +
    +

    The radius of the polygon, measured in meters.

    +
    +
    + + vertices + + +
    +

    The number of vertices the polygon will have. + The recommended amount is 64.

    +
    +
    +
    +
    +

    Return Value

    +

    A polygon shape which approximates a circle.

    +
    + +
    +
    +
  • +
  • +
    + + + + init(from:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(from decoder: Decoder) throws
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + encode(to:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func encode(to encoder: Encoder) throws
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + innerRings + +
    +
    +
    +
    +
    +
    +

    Representation of Polygons coordinates of inner rings

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var innerRings: [Ring] { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + outerRing + +
    +
    +
    +
    +
    +
    +

    Representation of Polygons coordinates of outer ring

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var outerRing: Ring { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + area + +
    +
    +
    +
    +
    +
    +

    The polygon’s area.

    + +

    This property is equivalent to the turf-area package of Turf.js (source code).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var area: Double { get }
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Returns whether the given coordinate falls within the polygon and outside of its interior rings.

    + +

    This method is equivalent to the turf-boolean-point-in-polygon package of Turf.js (source code).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func contains(_ coordinate: LocationCoordinate2D, ignoreBoundary: Bool = false) -> Bool
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + coordinate + + +
    +

    The coordinate to test for containment.

    +
    +
    + + ignoreBoundary + + +
    +

    Consider the coordinate to fall within the polygon even if it lies directly on one of the polygon’s linear rings.

    +
    +
    +
    +
    +

    Return Value

    +

    True if the coordinate falls within the polygon; false otherwise.

    +
    + +
    +
    +
  • +
  • +
    + + + + smooth(iterations:) + +
    +
    +
    +
    +
    +
    +

    Returns the polygon with corners smoothed out using Chaikin’s algorithm.

    + +

    This method is equivalent to the turf-polygon-smooth package of Turf.js (source code).

    +
    +

    Note

    + The returned polygon may be a degenerate polygon. + +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func smooth(iterations: Int = 3) -> Polygon
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Returns a copy of the polygon simplified using the Ramer–Douglas–Peucker algorithm.

    + +

    This method is equivalent to the turf-simplify package of Turf.js (source code).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func simplified(tolerance: Double = 1.0, highestQuality: Bool = false) -> Polygon
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + tolerance + + +
    +

    Controls the level of simplification by specifying the maximum allowed distance between the original line point and the simplified point. A higher tolerance value results in higher simplification.

    +
    +
    + + highestQuality + + +
    +

    Excludes the distance-based preprocessing step that leads to highest-quality simplification. High-quality simplification runs considerably slower, so consider how much precision is needed in your application.

    +
    +
    +
    +
    +

    Return Value

    +

    A simplified polygon.

    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Simplifies the polygon in place using the Ramer–Douglas–Peucker algorithm.

    + +

    This method is nearly equivalent to the turf-simplify package of Turf.js (source code), except that it mutates the polygon it is called on.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public mutating func simplify(tolerance: Double = 1.0, highestQuality: Bool = false)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + tolerance + + +
    +

    Controls the level of simplification by specifying the maximum allowed distance between the original line point and the simplified point. A higher tolerance value results in higher simplification.

    +
    +
    + + highestQuality + + +
    +

    Excludes the distance-based preprocessing step that leads to highest-quality simplification. High-quality simplification runs considerably slower, so consider how much precision is needed in your application.

    +
    +
    +
    + +
    +
    +
  • +
  • +
    + + + + center + +
    +
    +
    +
    +
    +
    +

    Calculates the absolute center of the bounding box.

    + +

    This property is equivalent to the turf-center package of Turf.js (source code).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var center: LocationCoordinate2D? { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + centroid + +
    +
    +
    +
    +
    +
    +

    Calculates the centroid using the mean of all vertices.

    + +

    Compared to center and centerOfMass, the centroid is less affected by small islands and artifacts.

    + +

    This property is equivalent to the turf-centroid package of Turf.js (source code).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var centroid: LocationCoordinate2D? { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + centerOfMass + +
    +
    +
    +
    +
    +
    +

    Calculates the center of mass using the centroid of polygon formula.

    + +

    This property is equivalent to the turf-center-of-mass package of Turf.js (source code).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var centerOfMass: LocationCoordinate2D? { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + geometry + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var geometry: Geometry { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + wkt + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var wkt: String { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(wkt:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(wkt: String) throws
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Structs/RadianCoordinate2D.html b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Structs/RadianCoordinate2D.html new file mode 100644 index 00000000..7bcbff76 --- /dev/null +++ b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Structs/RadianCoordinate2D.html @@ -0,0 +1,447 @@ + + + + RadianCoordinate2D Structure Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

RadianCoordinate2D

+
+
+ +
public struct RadianCoordinate2D : Sendable
+ +
+
+

A coordinate pair measured in radians, as opposed to LocationCoordinate2D, which is measured in degrees of arc.

+ + +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Initializes a coordinate pair located at the given latitude and longitude.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(latitude: LocationRadians, longitude: LocationRadians)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + latitude + + +
    +

    The latitude measured in radians.

    +
    +
    + + longitude + + +
    +

    The longitude measured in radians.

    +
    +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(_:) + +
    +
    +
    +
    +
    +
    +

    Initializes a coordinate pair measured in radians that is coincident to the given coordinate pair measured in degrees of arc.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(_ degreeCoordinate: LocationCoordinate2D)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + degreeCoordinate + + +
    +

    A coordinate pair measured in degrees of arc.

    +
    +
    +
    + +
    +
    +
  • +
  • +
    + + + + direction(to:) + +
    +
    +
    +
    +
    +
    +

    Returns direction given two coordinates.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func direction(to coordinate: RadianCoordinate2D) -> Measurement<UnitAngle>
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Returns coordinate at a given distance and direction away from coordinate.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func coordinate(at distance: RadianDistance, facing direction: Measurement<UnitAngle>) -> RadianCoordinate2D
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + distance(to:) + +
    +
    +
    +
    +
    +
    +

    Returns the Haversine distance between two coordinates measured in radians.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func distance(to coordinate: RadianCoordinate2D) -> RadianDistance
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Structs/Ring.html b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Structs/Ring.html new file mode 100644 index 00000000..57d60c66 --- /dev/null +++ b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Structs/Ring.html @@ -0,0 +1,454 @@ + + + + Ring Structure Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

Ring

+
+
+ +
public struct Ring : Sendable
+
extension Ring: Codable
+ +
+
+

A linear ring is a closed figure bounded by three or more straight line segments.

+ + +
+
+
+ +
+
+
+ +
+
+ + diff --git a/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Typealiases.html b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Typealiases.html new file mode 100644 index 00000000..ed8bc534 --- /dev/null +++ b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/Typealiases.html @@ -0,0 +1,572 @@ + + + + Type Aliases Reference + + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

Type Aliases

+

The following type aliases are available globally.

+ +
+
+
+
    +
  • +
    + + + + LocationDirection + +
    +
    +
    +
    +
    +
    +

    An azimuth measured in degrees clockwise from true north.

    + +

    This is a compatibility shim to keep the library’s public interface consistent between Apple and non-Apple platforms that lack Core Location. On Apple platforms, you can use CLLocationDirection anywhere you see this type.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias LocationDirection = CLLocationDirection
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + LocationDistance + +
    +
    +
    +
    +
    +
    +

    A distance in meters.

    + +

    This is a compatibility shim to keep the library’s public interface consistent between Apple and non-Apple platforms that lack Core Location. On Apple platforms, you can use CLLocationDistance anywhere you see this type.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias LocationDistance = CLLocationDistance
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + LocationDegrees + +
    +
    +
    +
    +
    +
    +

    A latitude or longitude in degrees.

    + +

    This is a compatibility shim to keep the library’s public interface consistent between Apple and non-Apple platforms that lack Core Location. On Apple platforms, you can use CLLocationDegrees anywhere you see this type.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias LocationDegrees = CLLocationDegrees
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + LocationCoordinate2D + +
    +
    +
    +
    +
    +
    +

    A geographic coordinate.

    + +

    This is a compatibility shim to keep the library’s public interface consistent between Apple and non-Apple platforms that lack Core Location. On Apple platforms, you can use CLLocationCoordinate2D anywhere you see this type.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias LocationCoordinate2D = CLLocationCoordinate2D
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + LocationDirection + +
    +
    +
    +
    +
    +
    +

    An azimuth measured in degrees clockwise from true north.

    + +
    +
    +
    +
  • +
  • +
    + + + + LocationDistance + +
    +
    +
    +
    +
    +
    +

    A distance in meters.

    + +
    +
    +
    +
  • +
  • +
    + + + + LocationDegrees + +
    +
    +
    +
    +
    +
    +

    A latitude or longitude in degrees.

    + +
    +
    +
    +
  • +
  • +
    + + + + JSONArray + +
    +
    +
    +
    +
    +
    +

    A JSON array of JSONValue instances.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias JSONArray = [JSONValue?]
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + JSONObject + +
    +
    +
    +
    +
    +
    +

    A JSON object represented in memory by a dictionary with strings as keys and JSONValue instances as values.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias JSONObject = [String : JSONValue?]
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + LocationRadians + +
    +
    +
    +
    +
    +
    +

    A latitude or longitude measured in radians, as opposed to LocationDegrees, which is measured in degrees of arc.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias LocationRadians = Double
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + RadianDistance + +
    +
    +
    +
    +
    +
    +

    A difference in latitude or longitude measured in radians, as opposed to CLLocationDegrees, which is used by some libraries to represent a similar distance measured in degrees of arc.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias RadianDistance = Double
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + LineSegment + +
    +
    +
    +
    +
    +
    +

    A segment between two positions in a LineString geometry or Ring.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias LineSegment = (LocationCoordinate2D, LocationCoordinate2D)
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/css/highlight.css b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/css/highlight.css new file mode 100644 index 00000000..c170357c --- /dev/null +++ b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/css/highlight.css @@ -0,0 +1,202 @@ +/*! Jazzy - https://github.com/realm/jazzy + * Copyright Realm Inc. + * SPDX-License-Identifier: MIT + */ +/* Credit to https://gist.github.com/wataru420/2048287 */ +.highlight .c { + color: #999988; + font-style: italic; } + +.highlight .err { + color: #a61717; + background-color: #e3d2d2; } + +.highlight .k { + color: #000000; + font-weight: bold; } + +.highlight .o { + color: #000000; + font-weight: bold; } + +.highlight .cm { + color: #999988; + font-style: italic; } + +.highlight .cp { + color: #999999; + font-weight: bold; } + +.highlight .c1 { + color: #999988; + font-style: italic; } + +.highlight .cs { + color: #999999; + font-weight: bold; + font-style: italic; } + +.highlight .gd { + color: #000000; + background-color: #ffdddd; } + +.highlight .gd .x { + color: #000000; + background-color: #ffaaaa; } + +.highlight .ge { + color: #000000; + font-style: italic; } + +.highlight .gr { + color: #aa0000; } + +.highlight .gh { + color: #999999; } + +.highlight .gi { + color: #000000; + background-color: #ddffdd; } + +.highlight .gi .x { + color: #000000; + background-color: #aaffaa; } + +.highlight .go { + color: #888888; } + +.highlight .gp { + color: #555555; } + +.highlight .gs { + font-weight: bold; } + +.highlight .gu { + color: #aaaaaa; } + +.highlight .gt { + color: #aa0000; } + +.highlight .kc { + color: #000000; + font-weight: bold; } + +.highlight .kd { + color: #000000; + font-weight: bold; } + +.highlight .kp { + color: #000000; + font-weight: bold; } + +.highlight .kr { + color: #000000; + font-weight: bold; } + +.highlight .kt { + color: #445588; } + +.highlight .m { + color: #009999; } + +.highlight .s { + color: #d14; } + +.highlight .na { + color: #008080; } + +.highlight .nb { + color: #0086B3; } + +.highlight .nc { + color: #445588; + font-weight: bold; } + +.highlight .no { + color: #008080; } + +.highlight .ni { + color: #800080; } + +.highlight .ne { + color: #990000; + font-weight: bold; } + +.highlight .nf { + color: #990000; } + +.highlight .nn { + color: #555555; } + +.highlight .nt { + color: #000080; } + +.highlight .nv { + color: #008080; } + +.highlight .ow { + color: #000000; + font-weight: bold; } + +.highlight .w { + color: #bbbbbb; } + +.highlight .mf { + color: #009999; } + +.highlight .mh { + color: #009999; } + +.highlight .mi { + color: #009999; } + +.highlight .mo { + color: #009999; } + +.highlight .sb { + color: #d14; } + +.highlight .sc { + color: #d14; } + +.highlight .sd { + color: #d14; } + +.highlight .s2 { + color: #d14; } + +.highlight .se { + color: #d14; } + +.highlight .sh { + color: #d14; } + +.highlight .si { + color: #d14; } + +.highlight .sx { + color: #d14; } + +.highlight .sr { + color: #009926; } + +.highlight .s1 { + color: #d14; } + +.highlight .ss { + color: #990073; } + +.highlight .bp { + color: #999999; } + +.highlight .vc { + color: #008080; } + +.highlight .vg { + color: #008080; } + +.highlight .vi { + color: #008080; } + +.highlight .il { + color: #009999; } diff --git a/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/css/jazzy.css b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/css/jazzy.css new file mode 100644 index 00000000..2e387139 --- /dev/null +++ b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/css/jazzy.css @@ -0,0 +1,439 @@ +/*! Jazzy - https://github.com/realm/jazzy + * Copyright Realm Inc. + * SPDX-License-Identifier: MIT + */ +html, body, div, span, h1, h3, h4, p, a, code, em, img, ul, li, table, tbody, tr, td { + background: transparent; + border: 0; + margin: 0; + outline: 0; + padding: 0; + vertical-align: baseline; } + +body { + background-color: #f2f2f2; + font-family: Helvetica, freesans, Arial, sans-serif; + font-size: 14px; + -webkit-font-smoothing: subpixel-antialiased; + word-wrap: break-word; } + +h1, h2, h3 { + margin-top: 0.8em; + margin-bottom: 0.3em; + font-weight: 100; + color: black; } + +h1 { + font-size: 2.5em; } + +h2 { + font-size: 2em; + border-bottom: 1px solid #e2e2e2; } + +h4 { + font-size: 13px; + line-height: 1.5; + margin-top: 21px; } + +h5 { + font-size: 1.1em; } + +h6 { + font-size: 1.1em; + color: #777; } + +.section-name { + color: gray; + display: block; + font-family: Helvetica; + font-size: 22px; + font-weight: 100; + margin-bottom: 15px; } + +pre, code { + font: 0.95em Menlo, monospace; + color: #777; + word-wrap: normal; } + +p code, li code { + background-color: #eee; + padding: 2px 4px; + border-radius: 4px; } + +pre > code { + padding: 0; } + +a { + color: #0088cc; + text-decoration: none; } + a code { + color: inherit; } + +ul { + padding-left: 15px; } + +li { + line-height: 1.8em; } + +img { + max-width: 100%; } + +blockquote { + margin-left: 0; + padding: 0 10px; + border-left: 4px solid #ccc; } + +hr { + height: 1px; + border: none; + background-color: #e2e2e2; } + +.footnote-ref { + display: inline-block; + scroll-margin-top: 70px; } + +.footnote-def { + scroll-margin-top: 70px; } + +.content-wrapper { + margin: 0 auto; + width: 980px; } + +header { + font-size: 0.85em; + line-height: 32px; + background-color: #414141; + position: fixed; + width: 100%; + z-index: 3; } + header img { + padding-right: 6px; + vertical-align: -3px; + height: 16px; } + header a { + color: #fff; } + header p { + float: left; + color: #999; } + header .header-right { + float: right; + margin-left: 16px; } + +#breadcrumbs { + background-color: #f2f2f2; + height: 21px; + padding-top: 17px; + position: fixed; + width: 100%; + z-index: 2; + margin-top: 32px; } + #breadcrumbs #carat { + height: 10px; + margin: 0 5px; } + +.sidebar { + background-color: #f9f9f9; + border: 1px solid #e2e2e2; + overflow-y: auto; + overflow-x: hidden; + position: fixed; + top: 70px; + bottom: 0; + width: 230px; + word-wrap: normal; } + +.nav-groups { + list-style-type: none; + background: #fff; + padding-left: 0; } + +.nav-group-name { + border-bottom: 1px solid #e2e2e2; + font-size: 1.1em; + font-weight: 100; + padding: 15px 0 15px 20px; } + .nav-group-name > a { + color: #333; } + +.nav-group-tasks { + margin-top: 5px; } + +.nav-group-task { + font-size: 0.9em; + list-style-type: none; + white-space: nowrap; } + .nav-group-task a { + color: #888; } + +.main-content { + background-color: #fff; + border: 1px solid #e2e2e2; + margin-left: 246px; + position: absolute; + overflow: hidden; + padding-bottom: 20px; + top: 70px; + width: 734px; } + .main-content p, .main-content a, .main-content code, .main-content em, .main-content ul, .main-content table, .main-content blockquote { + margin-bottom: 1em; } + .main-content p { + line-height: 1.8em; } + .main-content section .section:first-child { + margin-top: 0; + padding-top: 0; } + .main-content section .task-group-section .task-group:first-of-type { + padding-top: 10px; } + .main-content section .task-group-section .task-group:first-of-type .section-name { + padding-top: 15px; } + .main-content section .heading:before { + content: ""; + display: block; + padding-top: 70px; + margin: -70px 0 0; } + .main-content .section-name p { + margin-bottom: inherit; + line-height: inherit; } + .main-content .section-name code { + background-color: inherit; + padding: inherit; + color: inherit; } + +.section { + padding: 0 25px; } + +.highlight { + background-color: #eee; + padding: 10px 12px; + border: 1px solid #e2e2e2; + border-radius: 4px; + overflow-x: auto; } + +.declaration .highlight { + overflow-x: initial; + padding: 0 40px 40px 0; + margin-bottom: -25px; + background-color: transparent; + border: none; } + +.section-name { + margin: 0; + margin-left: 18px; } + +.task-group-section { + margin-top: 10px; + padding-left: 6px; + border-top: 1px solid #e2e2e2; } + +.task-group { + padding-top: 0px; } + +.task-name-container a[name]:before { + content: ""; + display: block; + padding-top: 70px; + margin: -70px 0 0; } + +.section-name-container { + position: relative; + display: inline-block; } + .section-name-container .section-name-link { + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + margin-bottom: 0; } + .section-name-container .section-name { + position: relative; + pointer-events: none; + z-index: 1; } + .section-name-container .section-name a { + pointer-events: auto; } + +.item { + padding-top: 8px; + width: 100%; + list-style-type: none; } + .item a[name]:before { + content: ""; + display: block; + padding-top: 70px; + margin: -70px 0 0; } + .item code { + background-color: transparent; + padding: 0; } + .item .token, .item .direct-link { + display: inline-block; + text-indent: -20px; + padding-left: 3px; + margin-left: 35px; + font-size: 11.9px; + transition: all 300ms; } + .item .token-open { + margin-left: 20px; } + .item .discouraged { + text-decoration: line-through; } + .item .declaration-note { + font-size: .85em; + color: gray; + font-style: italic; } + +.pointer-container { + border-bottom: 1px solid #e2e2e2; + left: -23px; + padding-bottom: 13px; + position: relative; + width: 110%; } + +.pointer { + background: #f9f9f9; + border-left: 1px solid #e2e2e2; + border-top: 1px solid #e2e2e2; + height: 12px; + left: 21px; + top: -7px; + -webkit-transform: rotate(45deg); + -moz-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); + position: absolute; + width: 12px; } + +.height-container { + display: none; + left: -25px; + padding: 0 25px; + position: relative; + width: 100%; + overflow: hidden; } + .height-container .section { + background: #f9f9f9; + border-bottom: 1px solid #e2e2e2; + left: -25px; + position: relative; + width: 100%; + padding-top: 10px; + padding-bottom: 5px; } + +.aside, .language { + padding: 6px 12px; + margin: 12px 0; + border-left: 5px solid #dddddd; + overflow-y: hidden; } + .aside .aside-title, .language .aside-title { + font-size: 9px; + letter-spacing: 2px; + text-transform: uppercase; + padding-bottom: 0; + margin: 0; + color: #aaa; + -webkit-user-select: none; } + .aside p:last-child, .language p:last-child { + margin-bottom: 0; } + +.language { + border-left: 5px solid #cde9f4; } + .language .aside-title { + color: #4b8afb; } + +.aside-warning, .aside-deprecated, .aside-unavailable { + border-left: 5px solid #ff6666; } + .aside-warning .aside-title, .aside-deprecated .aside-title, .aside-unavailable .aside-title { + color: #ff0000; } + +.graybox { + border-collapse: collapse; + width: 100%; } + .graybox p { + margin: 0; + word-break: break-word; + min-width: 50px; } + .graybox td { + border: 1px solid #e2e2e2; + padding: 5px 25px 5px 10px; + vertical-align: middle; } + .graybox tr td:first-of-type { + text-align: right; + padding: 7px; + vertical-align: top; + word-break: normal; + width: 40px; } + +.slightly-smaller { + font-size: 0.9em; } + +#footer { + position: relative; + top: 10px; + bottom: 0px; + margin-left: 25px; } + #footer p { + margin: 0; + color: #aaa; + font-size: 0.8em; } + +html.dash header, html.dash #breadcrumbs, html.dash .sidebar { + display: none; } + +html.dash .main-content { + width: 980px; + margin-left: 0; + border: none; + width: 100%; + top: 0; + padding-bottom: 0; } + +html.dash .height-container { + display: block; } + +html.dash .item .token { + margin-left: 0; } + +html.dash .content-wrapper { + width: auto; } + +html.dash #footer { + position: static; } + +form[role=search] { + float: right; } + form[role=search] input { + font: Helvetica, freesans, Arial, sans-serif; + margin-top: 6px; + font-size: 13px; + line-height: 20px; + padding: 0px 10px; + border: none; + border-radius: 1em; } + .loading form[role=search] input { + background: white url(../img/spinner.gif) center right 4px no-repeat; } + form[role=search] .tt-menu { + margin: 0; + min-width: 300px; + background: #fff; + color: #333; + border: 1px solid #e2e2e2; + z-index: 4; } + form[role=search] .tt-highlight { + font-weight: bold; } + form[role=search] .tt-suggestion { + font: Helvetica, freesans, Arial, sans-serif; + font-size: 14px; + padding: 0 8px; } + form[role=search] .tt-suggestion span { + display: table-cell; + white-space: nowrap; } + form[role=search] .tt-suggestion .doc-parent-name { + width: 100%; + text-align: right; + font-weight: normal; + font-size: 0.9em; + padding-left: 16px; } + form[role=search] .tt-suggestion:hover, + form[role=search] .tt-suggestion.tt-cursor { + cursor: pointer; + background-color: #4183c4; + color: #fff; } + form[role=search] .tt-suggestion:hover .doc-parent-name, + form[role=search] .tt-suggestion.tt-cursor .doc-parent-name { + color: #fff; } diff --git a/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/img/carat.png b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/img/carat.png new file mode 100755 index 0000000000000000000000000000000000000000..29d2f7fd4955fca6bc6fb740e0373a2c358c398e GIT binary patch literal 274 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRo!3HEV4DF?Wlw^r(L`iUdT1k0gQ7VIDN`6wR zf@f}GdTLN=VoGJ<$y6JlqAi{-jv*Ddl5#RKJQ5NTUZgiPI4RUKGIKU?u8L&ndhX1t za+0CMVUnT(Gnb}ei=c~x==tMH^F1_tBocXwcoSWoO-SZY-o>!8%^=Bms)(~h;m_U( zXNixk28L}0LS5-jKyq@#2gyS|J&f#pGCLkTc<@2s1dqeyqJ*Rc0tSIETAgmODY;(s z2y|Mcp&2}7rpBprBBB~1qM1`N+}4SoxYVPqsXi&l`rxZp{(w0iSy$Nv5*Vy!RapG^ S^0y4=eg;ohKbLh*2~7a!Pg}VF literal 0 HcmV?d00001 diff --git a/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/img/dash.png b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/img/dash.png new file mode 100755 index 0000000000000000000000000000000000000000..6f694c7a012b417908da3687a0a39aa182e91c74 GIT binary patch literal 1338 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 literal 0 HcmV?d00001 diff --git a/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/index.html b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/index.html new file mode 100644 index 00000000..280eaf8d --- /dev/null +++ b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/index.html @@ -0,0 +1,465 @@ + + + + Turf Reference + + + + + + + + + + + + +
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+ +

Turf for Swift

+ +

📱iOS     +🖥💻macOS     +📺tvOS     +⌚️watchOS     +Linux     +Documentation     +Carthage compatible     +CocoaPods     +SPM compatible    

+ +

A spatial analysis library written in Swift for native iOS, macOS, tvOS, watchOS, visionOS, and Linux applications, ported from Turf.js.

+

Requirements

+ +

Turf requires Xcode 14.1 or above and supports the following minimum deployment targets:

+ +
    +
  • iOS 11.0 and above
  • +
  • macOS 10.13 (High Sierra) and above
  • +
  • tvOS 11.0 and above
  • +
  • watchOS 4.0 and above
  • +
  • visionOS 1.0 and above (not supported via CocoaPods)
  • +
+ +

Alternatively, you can incorporate Turf into a command line tool without Xcode on any platform that Swift supports, including Linux.

+ +

If your project is written in Objective-C, you’ll need to write a compatibility layer between turf-swift and your Objective-C code. If your project is written in Objective-C++, you may be able to use spatial-algorithms as an alternative to Turf.

+

Installation

+ +

Releases are available for installation using any of the popular Swift dependency managers.

+

CocoaPods

+ +

To install Turf using CocoaPods:

+ +
    +
  1. Specify the following dependency in your Podfile: +rb +pod 'Turf', '~> 3.0' +
  2. +
  3. Run pod repo update if you haven’t lately.
  4. +
  5. Run pod install and open the resulting Xcode workspace.
  6. +
  7. Add import Turf to any Swift file in your application target.
  8. +
+

Carthage

+ +

To install Turf using Carthage:

+ +
    +
  1. Add the following dependency to your Cartfile: + +github "mapbox/turf-swift" ~> 3.0 +
  2. +
  3. Run carthage bootstrap.
  4. +
  5. Follow the rest of Carthage’s integration instructions. Your application target’s Embedded Frameworks should include Turf.framework.
  6. +
  7. Add import Turf to any Swift file in your application target.
  8. +
+

Swift Package Manager

+ +

To install Turf using the Swift Package Manager, add the following package to the dependencies in your Package.swift file:

+
.package(url: "https://github.com/mapbox/turf-swift.git", from: "3.0.0")
+
+ +

Then import Turf in any Swift file in your module.

+

Available functionality

+ +

This work-in-progress port of Turf.js contains the following functionality:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Turf.jsTurf for Swift
turf-along#alongLineString.coordinateFromStart(distance:)
turf-area#areaPolygon.area
turf-bearing#bearingCLLocationCoordinate2D.direction(to:)
LocationCoordinate2D.direction(to:) on Linux
RadianCoordinate2D.direction(to:)
turf-bezier-spline#bezierSplineLineString.bezier(resolution:sharpness:)
turf-boolean-point-in-polygon#booleanPointInPolygonPolygon.contains(_:ignoreBoundary:)
turf-center#centerPolygon.center
turf-center-of-mass#centerOfMassPolygon.centerOfMass
turf-centroid#centroidPolygon.centroid
turf-circle#circlePolygon(center:radius:vertices:)
turf-destination#destinationCLLocationCoordinate2D.coordinate(at:facing:)
LocationCoordinate2D.coordinate(at:facing:) on Linux
RadianCoordinate2D.coordinate(at:facing:)
turf-distance#distanceCLLocationCoordinate2D.distance(to:)
LocationCoordinate2D.distance(to:) on Linux
RadianCoordinate2D.distance(to:)
turf-helpers#polygonPolygon(_:)
turf-helpers#lineStringLineString(_:)
turf-helpers#degreesToRadiansCLLocationDegrees.toRadians()
LocationDegrees.toRadians() on Linux
turf-helpers#radiansToDegreesCLLocationDegrees.toDegrees()
LocationDegrees.toDegrees() on Linux
turf-helpers#convertLength
turf-helpers#convertArea
Measurement.converted(to:)
turf-length#lengthLineString.distance(from:to:)
turf-line-intersect#lineIntersectLineString.intersections(with:)
turf-line-slice#lineSliceLineString.sliced(from:to:)
turf-line-slice-along#lineSliceAlongLineString.trimmed(from:to:)
turf-midpoint#midpointmid(_:_:)
turf-nearest-point-on-line#nearestPointOnLineLineString.closestCoordinate(to:)
turf-polygon-to-line#polygonToLineLineString(_:)
MultiLineString(_:)
turf-simplify#simplifyLineString.simplify(tolerance:highestQuality:)
LineString.simplified(tolerance:highestQuality:)
turf-polygon-smooth#polygonSmoothPolygon.smooth(iterations:)
CLLocationDirection.difference(from:)
LocationDirection.difference(from:) on Linux
CLLocationDirection.wrap(min:max:)
LocationDirection.wrap(min:max:) on Linux
+

GeoJSON

+ +

turf-swift also contains a GeoJSON encoder/decoder with support for Codable.

+
// Decode an unknown GeoJSON object.
+let geojson = try JSONDecoder().decode(GeoJSONObject.self, from: data)
+guard case let .feature(feature) = geojson,
+      case let .point(point) = feature.geometry else {
+    return
+}
+
+// Decode a known GeoJSON object.
+let featureCollection = try JSONDecoder().decode(FeatureCollection.self, from: data)
+
+// Initialize a Point feature and encode it as GeoJSON.
+let coordinate = CLLocationCoordinate2D(latitude: 0, longitude: 1)
+let point = Point(coordinate)
+let pointFeature = Feature(geometry: .point(point))
+let data = try JSONEncoder().encode(pointFeature)
+let json = String(data: data, encoding: .utf8)
+print(json)
+
+/*
+{
+  "type": "Feature",
+  "geometry": {
+    "type": "Point",
+    "coordinates": [
+      1,
+      0
+    ]
+  }
+}
+*/
+
+
+

Well Known Text (WKT)

+ +

turf-swift contains a minimal WKT encoding/decoding support for geometries implementing WKTCodable protocol.

+
let wktString = "POINT(123.53 -12.12)"
+
+// Decoding is done using an init method
+let point = try? Point(wkt: wktString)
+let geometry = try? Geometry(wkt: wktString)
+
+print(point?.coordinates)
+
+// ...
+
+// Geometries then can be serialized using a property getter
+let serializedWKTString = point?.wkt
+print(serializedWKTString)
+
+
+ +
+
+ +
+
+ + diff --git a/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/js/jazzy.js b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/js/jazzy.js new file mode 100755 index 00000000..19844166 --- /dev/null +++ b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/js/jazzy.js @@ -0,0 +1,74 @@ +// Jazzy - https://github.com/realm/jazzy +// Copyright Realm Inc. +// SPDX-License-Identifier: MIT + +window.jazzy = {'docset': false} +if (typeof window.dash != 'undefined') { + document.documentElement.className += ' dash' + window.jazzy.docset = true +} +if (navigator.userAgent.match(/xcode/i)) { + document.documentElement.className += ' xcode' + window.jazzy.docset = true +} + +function toggleItem($link, $content) { + var animationDuration = 300; + $link.toggleClass('token-open'); + $content.slideToggle(animationDuration); +} + +function itemLinkToContent($link) { + return $link.parent().parent().next(); +} + +// On doc load + hash-change, open any targetted item +function openCurrentItemIfClosed() { + if (window.jazzy.docset) { + return; + } + var $link = $(`a[name="${location.hash.substring(1)}"]`).nextAll('.token'); + $content = itemLinkToContent($link); + if ($content.is(':hidden')) { + toggleItem($link, $content); + } +} + +$(openCurrentItemIfClosed); +$(window).on('hashchange', openCurrentItemIfClosed); + +// On item link ('token') click, toggle its discussion +$('.token').on('click', function(event) { + if (window.jazzy.docset) { + return; + } + var $link = $(this); + toggleItem($link, itemLinkToContent($link)); + + // Keeps the document from jumping to the hash. + var href = $link.attr('href'); + if (history.pushState) { + history.pushState({}, '', href); + } else { + location.hash = href; + } + event.preventDefault(); +}); + +// Clicks on links to the current, closed, item need to open the item +$("a:not('.token')").on('click', function() { + if (location == this.href) { + openCurrentItemIfClosed(); + } +}); + +// KaTeX rendering +if ("katex" in window) { + $($('.math').each( (_, element) => { + katex.render(element.textContent, element, { + displayMode: $(element).hasClass('m-block'), + throwOnError: false, + trust: true + }); + })) +} diff --git a/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/js/jazzy.search.js b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/js/jazzy.search.js new file mode 100644 index 00000000..359cdbb8 --- /dev/null +++ b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/js/jazzy.search.js @@ -0,0 +1,74 @@ +// Jazzy - https://github.com/realm/jazzy +// Copyright Realm Inc. +// SPDX-License-Identifier: MIT + +$(function(){ + var $typeahead = $('[data-typeahead]'); + var $form = $typeahead.parents('form'); + var searchURL = $form.attr('action'); + + function displayTemplate(result) { + return result.name; + } + + function suggestionTemplate(result) { + var t = '
'; + t += '' + result.name + ''; + if (result.parent_name) { + t += '' + result.parent_name + ''; + } + t += '
'; + return t; + } + + $typeahead.one('focus', function() { + $form.addClass('loading'); + + $.getJSON(searchURL).then(function(searchData) { + const searchIndex = lunr(function() { + this.ref('url'); + this.field('name'); + this.field('abstract'); + for (const [url, doc] of Object.entries(searchData)) { + this.add({url: url, name: doc.name, abstract: doc.abstract}); + } + }); + + $typeahead.typeahead( + { + highlight: true, + minLength: 3, + autoselect: true + }, + { + limit: 10, + display: displayTemplate, + templates: { suggestion: suggestionTemplate }, + source: function(query, sync) { + const lcSearch = query.toLowerCase(); + const results = searchIndex.query(function(q) { + q.term(lcSearch, { boost: 100 }); + q.term(lcSearch, { + boost: 10, + wildcard: lunr.Query.wildcard.TRAILING + }); + }).map(function(result) { + var doc = searchData[result.ref]; + doc.url = result.ref; + return doc; + }); + sync(results); + } + } + ); + $form.removeClass('loading'); + $typeahead.trigger('focus'); + }); + }); + + var baseURL = searchURL.slice(0, -"search.json".length); + + $typeahead.on('typeahead:select', function(e, result) { + window.location = baseURL + result.url; + }); +}); diff --git a/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/js/jquery.min.js b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/js/jquery.min.js new file mode 100644 index 00000000..2c69bc90 --- /dev/null +++ b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/js/jquery.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.6.1 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,y=n.hasOwnProperty,a=y.toString,l=a.call(Object),v={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.1",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&v(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!y||!y.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ve(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ye(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ve(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],y=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||y.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||y.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||y.push(".#.+[+~]"),e.querySelectorAll("\\\f"),y.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),y=y.length&&new RegExp(y.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),v=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&v(p,e)?-1:t==C||t.ownerDocument==p&&v(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!y||!y.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),v.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",v.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",v.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),v.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(v.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return B(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=_e(v.pixelPosition,function(e,t){if(t)return t=Be(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return B(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 00){var c=e.utils.clone(r)||{};c.position=[a,l],c.index=s.length,s.push(new e.Token(i.slice(a,o),c))}a=o+1}}return s},e.tokenizer.separator=/[\s\-]+/,e.Pipeline=function(){this._stack=[]},e.Pipeline.registeredFunctions=Object.create(null),e.Pipeline.registerFunction=function(t,r){r in this.registeredFunctions&&e.utils.warn("Overwriting existing registered function: "+r),t.label=r,e.Pipeline.registeredFunctions[t.label]=t},e.Pipeline.warnIfFunctionNotRegistered=function(t){var r=t.label&&t.label in this.registeredFunctions;r||e.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",t)},e.Pipeline.load=function(t){var r=new e.Pipeline;return t.forEach(function(t){var i=e.Pipeline.registeredFunctions[t];if(!i)throw new Error("Cannot load unregistered function: "+t);r.add(i)}),r},e.Pipeline.prototype.add=function(){var t=Array.prototype.slice.call(arguments);t.forEach(function(t){e.Pipeline.warnIfFunctionNotRegistered(t),this._stack.push(t)},this)},e.Pipeline.prototype.after=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");i+=1,this._stack.splice(i,0,r)},e.Pipeline.prototype.before=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");this._stack.splice(i,0,r)},e.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);t!=-1&&this._stack.splice(t,1)},e.Pipeline.prototype.run=function(e){for(var t=this._stack.length,r=0;r1&&(se&&(r=n),s!=e);)i=r-t,n=t+Math.floor(i/2),s=this.elements[2*n];return s==e?2*n:s>e?2*n:sa?l+=2:o==a&&(t+=r[u+1]*i[l+1],u+=2,l+=2);return t},e.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},e.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),t=1,r=0;t0){var o,a=s.str.charAt(0);a in s.node.edges?o=s.node.edges[a]:(o=new e.TokenSet,s.node.edges[a]=o),1==s.str.length&&(o["final"]=!0),n.push({node:o,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(0!=s.editsRemaining){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new e.TokenSet;s.node.edges["*"]=u}if(0==s.str.length&&(u["final"]=!0),n.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&n.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),1==s.str.length&&(s.node["final"]=!0),s.str.length>=1){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new e.TokenSet;s.node.edges["*"]=l}1==s.str.length&&(l["final"]=!0),n.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var c,h=s.str.charAt(0),d=s.str.charAt(1);d in s.node.edges?c=s.node.edges[d]:(c=new e.TokenSet,s.node.edges[d]=c),1==s.str.length&&(c["final"]=!0),n.push({node:c,editsRemaining:s.editsRemaining-1,str:h+s.str.slice(2)})}}}return i},e.TokenSet.fromString=function(t){for(var r=new e.TokenSet,i=r,n=0,s=t.length;n=e;t--){var r=this.uncheckedNodes[t],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r["char"]]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}},e.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},e.Index.prototype.search=function(t){return this.query(function(r){var i=new e.QueryParser(t,r);i.parse()})},e.Index.prototype.query=function(t){for(var r=new e.Query(this.fields),i=Object.create(null),n=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),u=0;u1?this._b=1:this._b=e},e.Builder.prototype.k1=function(e){this._k1=e},e.Builder.prototype.add=function(t,r){var i=t[this._ref],n=Object.keys(this._fields);this._documents[i]=r||{},this.documentCount+=1;for(var s=0;s=this.length)return e.QueryLexer.EOS;var t=this.str.charAt(this.pos);return this.pos+=1,t},e.QueryLexer.prototype.width=function(){return this.pos-this.start},e.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},e.QueryLexer.prototype.backup=function(){this.pos-=1},e.QueryLexer.prototype.acceptDigitRun=function(){var t,r;do t=this.next(),r=t.charCodeAt(0);while(r>47&&r<58);t!=e.QueryLexer.EOS&&this.backup()},e.QueryLexer.prototype.more=function(){return this.pos1&&(t.backup(),t.emit(e.QueryLexer.TERM)),t.ignore(),t.more())return e.QueryLexer.lexText},e.QueryLexer.lexEditDistance=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.EDIT_DISTANCE),e.QueryLexer.lexText},e.QueryLexer.lexBoost=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.BOOST),e.QueryLexer.lexText},e.QueryLexer.lexEOS=function(t){t.width()>0&&t.emit(e.QueryLexer.TERM)},e.QueryLexer.termSeparator=e.tokenizer.separator,e.QueryLexer.lexText=function(t){for(;;){var r=t.next();if(r==e.QueryLexer.EOS)return e.QueryLexer.lexEOS;if(92!=r.charCodeAt(0)){if(":"==r)return e.QueryLexer.lexField;if("~"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexEditDistance;if("^"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexBoost;if("+"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if("-"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if(r.match(e.QueryLexer.termSeparator))return e.QueryLexer.lexTerm}else t.escapeCharacter()}},e.QueryParser=function(t,r){this.lexer=new e.QueryLexer(t),this.query=r,this.currentClause={},this.lexemeIdx=0},e.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var t=e.QueryParser.parseClause;t;)t=t(this);return this.query},e.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},e.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},e.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},e.QueryParser.parseClause=function(t){var r=t.peekLexeme();if(void 0!=r)switch(r.type){case e.QueryLexer.PRESENCE:return e.QueryParser.parsePresence;case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expected either a field or a term, found "+r.type;throw r.str.length>=1&&(i+=" with value '"+r.str+"'"),new e.QueryParseError(i,r.start,r.end)}},e.QueryParser.parsePresence=function(t){var r=t.consumeLexeme();if(void 0!=r){switch(r.str){case"-":t.currentClause.presence=e.Query.presence.PROHIBITED;break;case"+":t.currentClause.presence=e.Query.presence.REQUIRED;break;default:var i="unrecognised presence operator'"+r.str+"'";throw new e.QueryParseError(i,r.start,r.end)}var n=t.peekLexeme();if(void 0==n){var i="expecting term or field, found nothing";throw new e.QueryParseError(i,r.start,r.end)}switch(n.type){case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expecting term or field, found '"+n.type+"'";throw new e.QueryParseError(i,n.start,n.end)}}},e.QueryParser.parseField=function(t){var r=t.consumeLexeme();if(void 0!=r){if(t.query.allFields.indexOf(r.str)==-1){var i=t.query.allFields.map(function(e){return"'"+e+"'"}).join(", "),n="unrecognised field '"+r.str+"', possible fields: "+i;throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.fields=[r.str];var s=t.peekLexeme();if(void 0==s){var n="expecting term, found nothing";throw new e.QueryParseError(n,r.start,r.end)}switch(s.type){case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var n="expecting term, found '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseTerm=function(t){var r=t.consumeLexeme();if(void 0!=r){t.currentClause.term=r.str.toLowerCase(),r.str.indexOf("*")!=-1&&(t.currentClause.usePipeline=!1);var i=t.peekLexeme();if(void 0==i)return void t.nextClause();switch(i.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+i.type+"'";throw new e.QueryParseError(n,i.start,i.end)}}},e.QueryParser.parseEditDistance=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="edit distance must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.editDistance=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseBoost=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="boost must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.boost=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},function(e,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():e.lunr=t()}(this,function(){return e})}(); diff --git a/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/js/typeahead.jquery.js b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/js/typeahead.jquery.js new file mode 100644 index 00000000..3a2d2ab0 --- /dev/null +++ b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/js/typeahead.jquery.js @@ -0,0 +1,1694 @@ +/*! + * typeahead.js 1.3.1 + * https://github.com/corejavascript/typeahead.js + * Copyright 2013-2020 Twitter, Inc. and other contributors; Licensed MIT + */ + + +(function(root, factory) { + if (typeof define === "function" && define.amd) { + define([ "jquery" ], function(a0) { + return factory(a0); + }); + } else if (typeof module === "object" && module.exports) { + module.exports = factory(require("jquery")); + } else { + factory(root["jQuery"]); + } +})(this, function($) { + var _ = function() { + "use strict"; + return { + isMsie: function() { + return /(msie|trident)/i.test(navigator.userAgent) ? navigator.userAgent.match(/(msie |rv:)(\d+(.\d+)?)/i)[2] : false; + }, + isBlankString: function(str) { + return !str || /^\s*$/.test(str); + }, + escapeRegExChars: function(str) { + return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"); + }, + isString: function(obj) { + return typeof obj === "string"; + }, + isNumber: function(obj) { + return typeof obj === "number"; + }, + isArray: $.isArray, + isFunction: $.isFunction, + isObject: $.isPlainObject, + isUndefined: function(obj) { + return typeof obj === "undefined"; + }, + isElement: function(obj) { + return !!(obj && obj.nodeType === 1); + }, + isJQuery: function(obj) { + return obj instanceof $; + }, + toStr: function toStr(s) { + return _.isUndefined(s) || s === null ? "" : s + ""; + }, + bind: $.proxy, + each: function(collection, cb) { + $.each(collection, reverseArgs); + function reverseArgs(index, value) { + return cb(value, index); + } + }, + map: $.map, + filter: $.grep, + every: function(obj, test) { + var result = true; + if (!obj) { + return result; + } + $.each(obj, function(key, val) { + if (!(result = test.call(null, val, key, obj))) { + return false; + } + }); + return !!result; + }, + some: function(obj, test) { + var result = false; + if (!obj) { + return result; + } + $.each(obj, function(key, val) { + if (result = test.call(null, val, key, obj)) { + return false; + } + }); + return !!result; + }, + mixin: $.extend, + identity: function(x) { + return x; + }, + clone: function(obj) { + return $.extend(true, {}, obj); + }, + getIdGenerator: function() { + var counter = 0; + return function() { + return counter++; + }; + }, + templatify: function templatify(obj) { + return $.isFunction(obj) ? obj : template; + function template() { + return String(obj); + } + }, + defer: function(fn) { + setTimeout(fn, 0); + }, + debounce: function(func, wait, immediate) { + var timeout, result; + return function() { + var context = this, args = arguments, later, callNow; + later = function() { + timeout = null; + if (!immediate) { + result = func.apply(context, args); + } + }; + callNow = immediate && !timeout; + clearTimeout(timeout); + timeout = setTimeout(later, wait); + if (callNow) { + result = func.apply(context, args); + } + return result; + }; + }, + throttle: function(func, wait) { + var context, args, timeout, result, previous, later; + previous = 0; + later = function() { + previous = new Date(); + timeout = null; + result = func.apply(context, args); + }; + return function() { + var now = new Date(), remaining = wait - (now - previous); + context = this; + args = arguments; + if (remaining <= 0) { + clearTimeout(timeout); + timeout = null; + previous = now; + result = func.apply(context, args); + } else if (!timeout) { + timeout = setTimeout(later, remaining); + } + return result; + }; + }, + stringify: function(val) { + return _.isString(val) ? val : JSON.stringify(val); + }, + guid: function() { + function _p8(s) { + var p = (Math.random().toString(16) + "000000000").substr(2, 8); + return s ? "-" + p.substr(0, 4) + "-" + p.substr(4, 4) : p; + } + return "tt-" + _p8() + _p8(true) + _p8(true) + _p8(); + }, + noop: function() {} + }; + }(); + var WWW = function() { + "use strict"; + var defaultClassNames = { + wrapper: "twitter-typeahead", + input: "tt-input", + hint: "tt-hint", + menu: "tt-menu", + dataset: "tt-dataset", + suggestion: "tt-suggestion", + selectable: "tt-selectable", + empty: "tt-empty", + open: "tt-open", + cursor: "tt-cursor", + highlight: "tt-highlight" + }; + return build; + function build(o) { + var www, classes; + classes = _.mixin({}, defaultClassNames, o); + www = { + css: buildCss(), + classes: classes, + html: buildHtml(classes), + selectors: buildSelectors(classes) + }; + return { + css: www.css, + html: www.html, + classes: www.classes, + selectors: www.selectors, + mixin: function(o) { + _.mixin(o, www); + } + }; + } + function buildHtml(c) { + return { + wrapper: '', + menu: '
' + }; + } + function buildSelectors(classes) { + var selectors = {}; + _.each(classes, function(v, k) { + selectors[k] = "." + v; + }); + return selectors; + } + function buildCss() { + var css = { + wrapper: { + position: "relative", + display: "inline-block" + }, + hint: { + position: "absolute", + top: "0", + left: "0", + borderColor: "transparent", + boxShadow: "none", + opacity: "1" + }, + input: { + position: "relative", + verticalAlign: "top", + backgroundColor: "transparent" + }, + inputWithNoHint: { + position: "relative", + verticalAlign: "top" + }, + menu: { + position: "absolute", + top: "100%", + left: "0", + zIndex: "100", + display: "none" + }, + ltr: { + left: "0", + right: "auto" + }, + rtl: { + left: "auto", + right: " 0" + } + }; + if (_.isMsie()) { + _.mixin(css.input, { + backgroundImage: "url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)" + }); + } + return css; + } + }(); + var EventBus = function() { + "use strict"; + var namespace, deprecationMap; + namespace = "typeahead:"; + deprecationMap = { + render: "rendered", + cursorchange: "cursorchanged", + select: "selected", + autocomplete: "autocompleted" + }; + function EventBus(o) { + if (!o || !o.el) { + $.error("EventBus initialized without el"); + } + this.$el = $(o.el); + } + _.mixin(EventBus.prototype, { + _trigger: function(type, args) { + var $e = $.Event(namespace + type); + this.$el.trigger.call(this.$el, $e, args || []); + return $e; + }, + before: function(type) { + var args, $e; + args = [].slice.call(arguments, 1); + $e = this._trigger("before" + type, args); + return $e.isDefaultPrevented(); + }, + trigger: function(type) { + var deprecatedType; + this._trigger(type, [].slice.call(arguments, 1)); + if (deprecatedType = deprecationMap[type]) { + this._trigger(deprecatedType, [].slice.call(arguments, 1)); + } + } + }); + return EventBus; + }(); + var EventEmitter = function() { + "use strict"; + var splitter = /\s+/, nextTick = getNextTick(); + return { + onSync: onSync, + onAsync: onAsync, + off: off, + trigger: trigger + }; + function on(method, types, cb, context) { + var type; + if (!cb) { + return this; + } + types = types.split(splitter); + cb = context ? bindContext(cb, context) : cb; + this._callbacks = this._callbacks || {}; + while (type = types.shift()) { + this._callbacks[type] = this._callbacks[type] || { + sync: [], + async: [] + }; + this._callbacks[type][method].push(cb); + } + return this; + } + function onAsync(types, cb, context) { + return on.call(this, "async", types, cb, context); + } + function onSync(types, cb, context) { + return on.call(this, "sync", types, cb, context); + } + function off(types) { + var type; + if (!this._callbacks) { + return this; + } + types = types.split(splitter); + while (type = types.shift()) { + delete this._callbacks[type]; + } + return this; + } + function trigger(types) { + var type, callbacks, args, syncFlush, asyncFlush; + if (!this._callbacks) { + return this; + } + types = types.split(splitter); + args = [].slice.call(arguments, 1); + while ((type = types.shift()) && (callbacks = this._callbacks[type])) { + syncFlush = getFlush(callbacks.sync, this, [ type ].concat(args)); + asyncFlush = getFlush(callbacks.async, this, [ type ].concat(args)); + syncFlush() && nextTick(asyncFlush); + } + return this; + } + function getFlush(callbacks, context, args) { + return flush; + function flush() { + var cancelled; + for (var i = 0, len = callbacks.length; !cancelled && i < len; i += 1) { + cancelled = callbacks[i].apply(context, args) === false; + } + return !cancelled; + } + } + function getNextTick() { + var nextTickFn; + if (window.setImmediate) { + nextTickFn = function nextTickSetImmediate(fn) { + setImmediate(function() { + fn(); + }); + }; + } else { + nextTickFn = function nextTickSetTimeout(fn) { + setTimeout(function() { + fn(); + }, 0); + }; + } + return nextTickFn; + } + function bindContext(fn, context) { + return fn.bind ? fn.bind(context) : function() { + fn.apply(context, [].slice.call(arguments, 0)); + }; + } + }(); + var highlight = function(doc) { + "use strict"; + var defaults = { + node: null, + pattern: null, + tagName: "strong", + className: null, + wordsOnly: false, + caseSensitive: false, + diacriticInsensitive: false + }; + var accented = { + A: "[AaªÀ-Åà-åĀ-ąǍǎȀ-ȃȦȧᴬᵃḀḁẚẠ-ảₐ℀℁℻⒜Ⓐⓐ㍱-㍴㎀-㎄㎈㎉㎩-㎯㏂㏊㏟㏿Aa]", + B: "[BbᴮᵇḂ-ḇℬ⒝Ⓑⓑ㍴㎅-㎇㏃㏈㏔㏝Bb]", + C: "[CcÇçĆ-čᶜ℀ℂ℃℅℆ℭⅭⅽ⒞Ⓒⓒ㍶㎈㎉㎝㎠㎤㏄-㏇Cc]", + D: "[DdĎďDŽ-džDZ-dzᴰᵈḊ-ḓⅅⅆⅮⅾ⒟Ⓓⓓ㋏㍲㍷-㍹㎗㎭-㎯㏅㏈Dd]", + E: "[EeÈ-Ëè-ëĒ-ěȄ-ȇȨȩᴱᵉḘ-ḛẸ-ẽₑ℡ℯℰⅇ⒠Ⓔⓔ㉐㋍㋎Ee]", + F: "[FfᶠḞḟ℉ℱ℻⒡Ⓕⓕ㎊-㎌㎙ff-fflFf]", + G: "[GgĜ-ģǦǧǴǵᴳᵍḠḡℊ⒢Ⓖⓖ㋌㋍㎇㎍-㎏㎓㎬㏆㏉㏒㏿Gg]", + H: "[HhĤĥȞȟʰᴴḢ-ḫẖℋ-ℎ⒣Ⓗⓗ㋌㍱㎐-㎔㏊㏋㏗Hh]", + I: "[IiÌ-Ïì-ïĨ-İIJijǏǐȈ-ȋᴵᵢḬḭỈ-ịⁱℐℑℹⅈⅠ-ⅣⅥ-ⅨⅪⅫⅰ-ⅳⅵ-ⅸⅺⅻ⒤Ⓘⓘ㍺㏌㏕fiffiIi]", + J: "[JjIJ-ĵLJ-njǰʲᴶⅉ⒥ⒿⓙⱼJj]", + K: "[KkĶķǨǩᴷᵏḰ-ḵK⒦Ⓚⓚ㎄㎅㎉㎏㎑㎘㎞㎢㎦㎪㎸㎾㏀㏆㏍-㏏Kk]", + L: "[LlĹ-ŀLJ-ljˡᴸḶḷḺ-ḽℒℓ℡Ⅼⅼ⒧Ⓛⓛ㋏㎈㎉㏐-㏓㏕㏖㏿flfflLl]", + M: "[MmᴹᵐḾ-ṃ℠™ℳⅯⅿ⒨Ⓜⓜ㍷-㍹㎃㎆㎎㎒㎖㎙-㎨㎫㎳㎷㎹㎽㎿㏁㏂㏎㏐㏔-㏖㏘㏙㏞㏟Mm]", + N: "[NnÑñŃ-ʼnNJ-njǸǹᴺṄ-ṋⁿℕ№⒩Ⓝⓝ㎁㎋㎚㎱㎵㎻㏌㏑Nn]", + O: "[OoºÒ-Öò-öŌ-őƠơǑǒǪǫȌ-ȏȮȯᴼᵒỌ-ỏₒ℅№ℴ⒪Ⓞⓞ㍵㏇㏒㏖Oo]", + P: "[PpᴾᵖṔ-ṗℙ⒫Ⓟⓟ㉐㍱㍶㎀㎊㎩-㎬㎰㎴㎺㏋㏗-㏚Pp]", + Q: "[Qqℚ⒬Ⓠⓠ㏃Qq]", + R: "[RrŔ-řȐ-ȓʳᴿᵣṘ-ṛṞṟ₨ℛ-ℝ⒭Ⓡⓡ㋍㍴㎭-㎯㏚㏛Rr]", + S: "[SsŚ-šſȘșˢṠ-ṣ₨℁℠⒮Ⓢⓢ㎧㎨㎮-㎳㏛㏜stSs]", + T: "[TtŢ-ťȚțᵀᵗṪ-ṱẗ℡™⒯Ⓣⓣ㉐㋏㎔㏏ſtstTt]", + U: "[UuÙ-Üù-üŨ-ųƯưǓǔȔ-ȗᵁᵘᵤṲ-ṷỤ-ủ℆⒰Ⓤⓤ㍳㍺Uu]", + V: "[VvᵛᵥṼ-ṿⅣ-Ⅷⅳ-ⅷ⒱Ⓥⓥⱽ㋎㍵㎴-㎹㏜㏞Vv]", + W: "[WwŴŵʷᵂẀ-ẉẘ⒲Ⓦⓦ㎺-㎿㏝Ww]", + X: "[XxˣẊ-ẍₓ℻Ⅸ-Ⅻⅸ-ⅻ⒳Ⓧⓧ㏓Xx]", + Y: "[YyÝýÿŶ-ŸȲȳʸẎẏẙỲ-ỹ⒴Ⓨⓨ㏉Yy]", + Z: "[ZzŹ-žDZ-dzᶻẐ-ẕℤℨ⒵Ⓩⓩ㎐-㎔Zz]" + }; + return function hightlight(o) { + var regex; + o = _.mixin({}, defaults, o); + if (!o.node || !o.pattern) { + return; + } + o.pattern = _.isArray(o.pattern) ? o.pattern : [ o.pattern ]; + regex = getRegex(o.pattern, o.caseSensitive, o.wordsOnly, o.diacriticInsensitive); + traverse(o.node, hightlightTextNode); + function hightlightTextNode(textNode) { + var match, patternNode, wrapperNode; + if (match = regex.exec(textNode.data)) { + wrapperNode = doc.createElement(o.tagName); + o.className && (wrapperNode.className = o.className); + patternNode = textNode.splitText(match.index); + patternNode.splitText(match[0].length); + wrapperNode.appendChild(patternNode.cloneNode(true)); + textNode.parentNode.replaceChild(wrapperNode, patternNode); + } + return !!match; + } + function traverse(el, hightlightTextNode) { + var childNode, TEXT_NODE_TYPE = 3; + for (var i = 0; i < el.childNodes.length; i++) { + childNode = el.childNodes[i]; + if (childNode.nodeType === TEXT_NODE_TYPE) { + i += hightlightTextNode(childNode) ? 1 : 0; + } else { + traverse(childNode, hightlightTextNode); + } + } + } + }; + function accent_replacer(chr) { + return accented[chr.toUpperCase()] || chr; + } + function getRegex(patterns, caseSensitive, wordsOnly, diacriticInsensitive) { + var escapedPatterns = [], regexStr; + for (var i = 0, len = patterns.length; i < len; i++) { + var escapedWord = _.escapeRegExChars(patterns[i]); + if (diacriticInsensitive) { + escapedWord = escapedWord.replace(/\S/g, accent_replacer); + } + escapedPatterns.push(escapedWord); + } + regexStr = wordsOnly ? "\\b(" + escapedPatterns.join("|") + ")\\b" : "(" + escapedPatterns.join("|") + ")"; + return caseSensitive ? new RegExp(regexStr) : new RegExp(regexStr, "i"); + } + }(window.document); + var Input = function() { + "use strict"; + var specialKeyCodeMap; + specialKeyCodeMap = { + 9: "tab", + 27: "esc", + 37: "left", + 39: "right", + 13: "enter", + 38: "up", + 40: "down" + }; + function Input(o, www) { + var id; + o = o || {}; + if (!o.input) { + $.error("input is missing"); + } + www.mixin(this); + this.$hint = $(o.hint); + this.$input = $(o.input); + this.$menu = $(o.menu); + id = this.$input.attr("id") || _.guid(); + this.$menu.attr("id", id + "_listbox"); + this.$hint.attr({ + "aria-hidden": true + }); + this.$input.attr({ + "aria-owns": id + "_listbox", + role: "combobox", + "aria-autocomplete": "list", + "aria-expanded": false + }); + this.query = this.$input.val(); + this.queryWhenFocused = this.hasFocus() ? this.query : null; + this.$overflowHelper = buildOverflowHelper(this.$input); + this._checkLanguageDirection(); + if (this.$hint.length === 0) { + this.setHint = this.getHint = this.clearHint = this.clearHintIfInvalid = _.noop; + } + this.onSync("cursorchange", this._updateDescendent); + } + Input.normalizeQuery = function(str) { + return _.toStr(str).replace(/^\s*/g, "").replace(/\s{2,}/g, " "); + }; + _.mixin(Input.prototype, EventEmitter, { + _onBlur: function onBlur() { + this.resetInputValue(); + this.trigger("blurred"); + }, + _onFocus: function onFocus() { + this.queryWhenFocused = this.query; + this.trigger("focused"); + }, + _onKeydown: function onKeydown($e) { + var keyName = specialKeyCodeMap[$e.which || $e.keyCode]; + this._managePreventDefault(keyName, $e); + if (keyName && this._shouldTrigger(keyName, $e)) { + this.trigger(keyName + "Keyed", $e); + } + }, + _onInput: function onInput() { + this._setQuery(this.getInputValue()); + this.clearHintIfInvalid(); + this._checkLanguageDirection(); + }, + _managePreventDefault: function managePreventDefault(keyName, $e) { + var preventDefault; + switch (keyName) { + case "up": + case "down": + preventDefault = !withModifier($e); + break; + + default: + preventDefault = false; + } + preventDefault && $e.preventDefault(); + }, + _shouldTrigger: function shouldTrigger(keyName, $e) { + var trigger; + switch (keyName) { + case "tab": + trigger = !withModifier($e); + break; + + default: + trigger = true; + } + return trigger; + }, + _checkLanguageDirection: function checkLanguageDirection() { + var dir = (this.$input.css("direction") || "ltr").toLowerCase(); + if (this.dir !== dir) { + this.dir = dir; + this.$hint.attr("dir", dir); + this.trigger("langDirChanged", dir); + } + }, + _setQuery: function setQuery(val, silent) { + var areEquivalent, hasDifferentWhitespace; + areEquivalent = areQueriesEquivalent(val, this.query); + hasDifferentWhitespace = areEquivalent ? this.query.length !== val.length : false; + this.query = val; + if (!silent && !areEquivalent) { + this.trigger("queryChanged", this.query); + } else if (!silent && hasDifferentWhitespace) { + this.trigger("whitespaceChanged", this.query); + } + }, + _updateDescendent: function updateDescendent(event, id) { + this.$input.attr("aria-activedescendant", id); + }, + bind: function() { + var that = this, onBlur, onFocus, onKeydown, onInput; + onBlur = _.bind(this._onBlur, this); + onFocus = _.bind(this._onFocus, this); + onKeydown = _.bind(this._onKeydown, this); + onInput = _.bind(this._onInput, this); + this.$input.on("blur.tt", onBlur).on("focus.tt", onFocus).on("keydown.tt", onKeydown); + if (!_.isMsie() || _.isMsie() > 9) { + this.$input.on("input.tt", onInput); + } else { + this.$input.on("keydown.tt keypress.tt cut.tt paste.tt", function($e) { + if (specialKeyCodeMap[$e.which || $e.keyCode]) { + return; + } + _.defer(_.bind(that._onInput, that, $e)); + }); + } + return this; + }, + focus: function focus() { + this.$input.focus(); + }, + blur: function blur() { + this.$input.blur(); + }, + getLangDir: function getLangDir() { + return this.dir; + }, + getQuery: function getQuery() { + return this.query || ""; + }, + setQuery: function setQuery(val, silent) { + this.setInputValue(val); + this._setQuery(val, silent); + }, + hasQueryChangedSinceLastFocus: function hasQueryChangedSinceLastFocus() { + return this.query !== this.queryWhenFocused; + }, + getInputValue: function getInputValue() { + return this.$input.val(); + }, + setInputValue: function setInputValue(value) { + this.$input.val(value); + this.clearHintIfInvalid(); + this._checkLanguageDirection(); + }, + resetInputValue: function resetInputValue() { + this.setInputValue(this.query); + }, + getHint: function getHint() { + return this.$hint.val(); + }, + setHint: function setHint(value) { + this.$hint.val(value); + }, + clearHint: function clearHint() { + this.setHint(""); + }, + clearHintIfInvalid: function clearHintIfInvalid() { + var val, hint, valIsPrefixOfHint, isValid; + val = this.getInputValue(); + hint = this.getHint(); + valIsPrefixOfHint = val !== hint && hint.indexOf(val) === 0; + isValid = val !== "" && valIsPrefixOfHint && !this.hasOverflow(); + !isValid && this.clearHint(); + }, + hasFocus: function hasFocus() { + return this.$input.is(":focus"); + }, + hasOverflow: function hasOverflow() { + var constraint = this.$input.width() - 2; + this.$overflowHelper.text(this.getInputValue()); + return this.$overflowHelper.width() >= constraint; + }, + isCursorAtEnd: function() { + var valueLength, selectionStart, range; + valueLength = this.$input.val().length; + selectionStart = this.$input[0].selectionStart; + if (_.isNumber(selectionStart)) { + return selectionStart === valueLength; + } else if (document.selection) { + range = document.selection.createRange(); + range.moveStart("character", -valueLength); + return valueLength === range.text.length; + } + return true; + }, + destroy: function destroy() { + this.$hint.off(".tt"); + this.$input.off(".tt"); + this.$overflowHelper.remove(); + this.$hint = this.$input = this.$overflowHelper = $("
"); + }, + setAriaExpanded: function setAriaExpanded(value) { + this.$input.attr("aria-expanded", value); + } + }); + return Input; + function buildOverflowHelper($input) { + return $('').css({ + position: "absolute", + visibility: "hidden", + whiteSpace: "pre", + fontFamily: $input.css("font-family"), + fontSize: $input.css("font-size"), + fontStyle: $input.css("font-style"), + fontVariant: $input.css("font-variant"), + fontWeight: $input.css("font-weight"), + wordSpacing: $input.css("word-spacing"), + letterSpacing: $input.css("letter-spacing"), + textIndent: $input.css("text-indent"), + textRendering: $input.css("text-rendering"), + textTransform: $input.css("text-transform") + }).insertAfter($input); + } + function areQueriesEquivalent(a, b) { + return Input.normalizeQuery(a) === Input.normalizeQuery(b); + } + function withModifier($e) { + return $e.altKey || $e.ctrlKey || $e.metaKey || $e.shiftKey; + } + }(); + var Dataset = function() { + "use strict"; + var keys, nameGenerator; + keys = { + dataset: "tt-selectable-dataset", + val: "tt-selectable-display", + obj: "tt-selectable-object" + }; + nameGenerator = _.getIdGenerator(); + function Dataset(o, www) { + o = o || {}; + o.templates = o.templates || {}; + o.templates.notFound = o.templates.notFound || o.templates.empty; + if (!o.source) { + $.error("missing source"); + } + if (!o.node) { + $.error("missing node"); + } + if (o.name && !isValidName(o.name)) { + $.error("invalid dataset name: " + o.name); + } + www.mixin(this); + this.highlight = !!o.highlight; + this.name = _.toStr(o.name || nameGenerator()); + this.limit = o.limit || 5; + this.displayFn = getDisplayFn(o.display || o.displayKey); + this.templates = getTemplates(o.templates, this.displayFn); + this.source = o.source.__ttAdapter ? o.source.__ttAdapter() : o.source; + this.async = _.isUndefined(o.async) ? this.source.length > 2 : !!o.async; + this._resetLastSuggestion(); + this.$el = $(o.node).attr("role", "presentation").addClass(this.classes.dataset).addClass(this.classes.dataset + "-" + this.name); + } + Dataset.extractData = function extractData(el) { + var $el = $(el); + if ($el.data(keys.obj)) { + return { + dataset: $el.data(keys.dataset) || "", + val: $el.data(keys.val) || "", + obj: $el.data(keys.obj) || null + }; + } + return null; + }; + _.mixin(Dataset.prototype, EventEmitter, { + _overwrite: function overwrite(query, suggestions) { + suggestions = suggestions || []; + if (suggestions.length) { + this._renderSuggestions(query, suggestions); + } else if (this.async && this.templates.pending) { + this._renderPending(query); + } else if (!this.async && this.templates.notFound) { + this._renderNotFound(query); + } else { + this._empty(); + } + this.trigger("rendered", suggestions, false, this.name); + }, + _append: function append(query, suggestions) { + suggestions = suggestions || []; + if (suggestions.length && this.$lastSuggestion.length) { + this._appendSuggestions(query, suggestions); + } else if (suggestions.length) { + this._renderSuggestions(query, suggestions); + } else if (!this.$lastSuggestion.length && this.templates.notFound) { + this._renderNotFound(query); + } + this.trigger("rendered", suggestions, true, this.name); + }, + _renderSuggestions: function renderSuggestions(query, suggestions) { + var $fragment; + $fragment = this._getSuggestionsFragment(query, suggestions); + this.$lastSuggestion = $fragment.children().last(); + this.$el.html($fragment).prepend(this._getHeader(query, suggestions)).append(this._getFooter(query, suggestions)); + }, + _appendSuggestions: function appendSuggestions(query, suggestions) { + var $fragment, $lastSuggestion; + $fragment = this._getSuggestionsFragment(query, suggestions); + $lastSuggestion = $fragment.children().last(); + this.$lastSuggestion.after($fragment); + this.$lastSuggestion = $lastSuggestion; + }, + _renderPending: function renderPending(query) { + var template = this.templates.pending; + this._resetLastSuggestion(); + template && this.$el.html(template({ + query: query, + dataset: this.name + })); + }, + _renderNotFound: function renderNotFound(query) { + var template = this.templates.notFound; + this._resetLastSuggestion(); + template && this.$el.html(template({ + query: query, + dataset: this.name + })); + }, + _empty: function empty() { + this.$el.empty(); + this._resetLastSuggestion(); + }, + _getSuggestionsFragment: function getSuggestionsFragment(query, suggestions) { + var that = this, fragment; + fragment = document.createDocumentFragment(); + _.each(suggestions, function getSuggestionNode(suggestion) { + var $el, context; + context = that._injectQuery(query, suggestion); + $el = $(that.templates.suggestion(context)).data(keys.dataset, that.name).data(keys.obj, suggestion).data(keys.val, that.displayFn(suggestion)).addClass(that.classes.suggestion + " " + that.classes.selectable); + fragment.appendChild($el[0]); + }); + this.highlight && highlight({ + className: this.classes.highlight, + node: fragment, + pattern: query + }); + return $(fragment); + }, + _getFooter: function getFooter(query, suggestions) { + return this.templates.footer ? this.templates.footer({ + query: query, + suggestions: suggestions, + dataset: this.name + }) : null; + }, + _getHeader: function getHeader(query, suggestions) { + return this.templates.header ? this.templates.header({ + query: query, + suggestions: suggestions, + dataset: this.name + }) : null; + }, + _resetLastSuggestion: function resetLastSuggestion() { + this.$lastSuggestion = $(); + }, + _injectQuery: function injectQuery(query, obj) { + return _.isObject(obj) ? _.mixin({ + _query: query + }, obj) : obj; + }, + update: function update(query) { + var that = this, canceled = false, syncCalled = false, rendered = 0; + this.cancel(); + this.cancel = function cancel() { + canceled = true; + that.cancel = $.noop; + that.async && that.trigger("asyncCanceled", query, that.name); + }; + this.source(query, sync, async); + !syncCalled && sync([]); + function sync(suggestions) { + if (syncCalled) { + return; + } + syncCalled = true; + suggestions = (suggestions || []).slice(0, that.limit); + rendered = suggestions.length; + that._overwrite(query, suggestions); + if (rendered < that.limit && that.async) { + that.trigger("asyncRequested", query, that.name); + } + } + function async(suggestions) { + suggestions = suggestions || []; + if (!canceled && rendered < that.limit) { + that.cancel = $.noop; + var idx = Math.abs(rendered - that.limit); + rendered += idx; + that._append(query, suggestions.slice(0, idx)); + that.async && that.trigger("asyncReceived", query, that.name); + } + } + }, + cancel: $.noop, + clear: function clear() { + this._empty(); + this.cancel(); + this.trigger("cleared"); + }, + isEmpty: function isEmpty() { + return this.$el.is(":empty"); + }, + destroy: function destroy() { + this.$el = $("
"); + } + }); + return Dataset; + function getDisplayFn(display) { + display = display || _.stringify; + return _.isFunction(display) ? display : displayFn; + function displayFn(obj) { + return obj[display]; + } + } + function getTemplates(templates, displayFn) { + return { + notFound: templates.notFound && _.templatify(templates.notFound), + pending: templates.pending && _.templatify(templates.pending), + header: templates.header && _.templatify(templates.header), + footer: templates.footer && _.templatify(templates.footer), + suggestion: templates.suggestion ? userSuggestionTemplate : suggestionTemplate + }; + function userSuggestionTemplate(context) { + var template = templates.suggestion; + return $(template(context)).attr("id", _.guid()); + } + function suggestionTemplate(context) { + return $('
').attr("id", _.guid()).text(displayFn(context)); + } + } + function isValidName(str) { + return /^[_a-zA-Z0-9-]+$/.test(str); + } + }(); + var Menu = function() { + "use strict"; + function Menu(o, www) { + var that = this; + o = o || {}; + if (!o.node) { + $.error("node is required"); + } + www.mixin(this); + this.$node = $(o.node); + this.query = null; + this.datasets = _.map(o.datasets, initializeDataset); + function initializeDataset(oDataset) { + var node = that.$node.find(oDataset.node).first(); + oDataset.node = node.length ? node : $("
").appendTo(that.$node); + return new Dataset(oDataset, www); + } + } + _.mixin(Menu.prototype, EventEmitter, { + _onSelectableClick: function onSelectableClick($e) { + this.trigger("selectableClicked", $($e.currentTarget)); + }, + _onRendered: function onRendered(type, dataset, suggestions, async) { + this.$node.toggleClass(this.classes.empty, this._allDatasetsEmpty()); + this.trigger("datasetRendered", dataset, suggestions, async); + }, + _onCleared: function onCleared() { + this.$node.toggleClass(this.classes.empty, this._allDatasetsEmpty()); + this.trigger("datasetCleared"); + }, + _propagate: function propagate() { + this.trigger.apply(this, arguments); + }, + _allDatasetsEmpty: function allDatasetsEmpty() { + return _.every(this.datasets, _.bind(function isDatasetEmpty(dataset) { + var isEmpty = dataset.isEmpty(); + this.$node.attr("aria-expanded", !isEmpty); + return isEmpty; + }, this)); + }, + _getSelectables: function getSelectables() { + return this.$node.find(this.selectors.selectable); + }, + _removeCursor: function _removeCursor() { + var $selectable = this.getActiveSelectable(); + $selectable && $selectable.removeClass(this.classes.cursor); + }, + _ensureVisible: function ensureVisible($el) { + var elTop, elBottom, nodeScrollTop, nodeHeight; + elTop = $el.position().top; + elBottom = elTop + $el.outerHeight(true); + nodeScrollTop = this.$node.scrollTop(); + nodeHeight = this.$node.height() + parseInt(this.$node.css("paddingTop"), 10) + parseInt(this.$node.css("paddingBottom"), 10); + if (elTop < 0) { + this.$node.scrollTop(nodeScrollTop + elTop); + } else if (nodeHeight < elBottom) { + this.$node.scrollTop(nodeScrollTop + (elBottom - nodeHeight)); + } + }, + bind: function() { + var that = this, onSelectableClick; + onSelectableClick = _.bind(this._onSelectableClick, this); + this.$node.on("click.tt", this.selectors.selectable, onSelectableClick); + this.$node.on("mouseover", this.selectors.selectable, function() { + that.setCursor($(this)); + }); + this.$node.on("mouseleave", function() { + that._removeCursor(); + }); + _.each(this.datasets, function(dataset) { + dataset.onSync("asyncRequested", that._propagate, that).onSync("asyncCanceled", that._propagate, that).onSync("asyncReceived", that._propagate, that).onSync("rendered", that._onRendered, that).onSync("cleared", that._onCleared, that); + }); + return this; + }, + isOpen: function isOpen() { + return this.$node.hasClass(this.classes.open); + }, + open: function open() { + this.$node.scrollTop(0); + this.$node.addClass(this.classes.open); + }, + close: function close() { + this.$node.attr("aria-expanded", false); + this.$node.removeClass(this.classes.open); + this._removeCursor(); + }, + setLanguageDirection: function setLanguageDirection(dir) { + this.$node.attr("dir", dir); + }, + selectableRelativeToCursor: function selectableRelativeToCursor(delta) { + var $selectables, $oldCursor, oldIndex, newIndex; + $oldCursor = this.getActiveSelectable(); + $selectables = this._getSelectables(); + oldIndex = $oldCursor ? $selectables.index($oldCursor) : -1; + newIndex = oldIndex + delta; + newIndex = (newIndex + 1) % ($selectables.length + 1) - 1; + newIndex = newIndex < -1 ? $selectables.length - 1 : newIndex; + return newIndex === -1 ? null : $selectables.eq(newIndex); + }, + setCursor: function setCursor($selectable) { + this._removeCursor(); + if ($selectable = $selectable && $selectable.first()) { + $selectable.addClass(this.classes.cursor); + this._ensureVisible($selectable); + } + }, + getSelectableData: function getSelectableData($el) { + return $el && $el.length ? Dataset.extractData($el) : null; + }, + getActiveSelectable: function getActiveSelectable() { + var $selectable = this._getSelectables().filter(this.selectors.cursor).first(); + return $selectable.length ? $selectable : null; + }, + getTopSelectable: function getTopSelectable() { + var $selectable = this._getSelectables().first(); + return $selectable.length ? $selectable : null; + }, + update: function update(query) { + var isValidUpdate = query !== this.query; + if (isValidUpdate) { + this.query = query; + _.each(this.datasets, updateDataset); + } + return isValidUpdate; + function updateDataset(dataset) { + dataset.update(query); + } + }, + empty: function empty() { + _.each(this.datasets, clearDataset); + this.query = null; + this.$node.addClass(this.classes.empty); + function clearDataset(dataset) { + dataset.clear(); + } + }, + destroy: function destroy() { + this.$node.off(".tt"); + this.$node = $("
"); + _.each(this.datasets, destroyDataset); + function destroyDataset(dataset) { + dataset.destroy(); + } + } + }); + return Menu; + }(); + var Status = function() { + "use strict"; + function Status(options) { + this.$el = $("", { + role: "status", + "aria-live": "polite" + }).css({ + position: "absolute", + padding: "0", + border: "0", + height: "1px", + width: "1px", + "margin-bottom": "-1px", + "margin-right": "-1px", + overflow: "hidden", + clip: "rect(0 0 0 0)", + "white-space": "nowrap" + }); + options.$input.after(this.$el); + _.each(options.menu.datasets, _.bind(function(dataset) { + if (dataset.onSync) { + dataset.onSync("rendered", _.bind(this.update, this)); + dataset.onSync("cleared", _.bind(this.cleared, this)); + } + }, this)); + } + _.mixin(Status.prototype, { + update: function update(event, suggestions) { + var length = suggestions.length; + var words; + if (length === 1) { + words = { + result: "result", + is: "is" + }; + } else { + words = { + result: "results", + is: "are" + }; + } + this.$el.text(length + " " + words.result + " " + words.is + " available, use up and down arrow keys to navigate."); + }, + cleared: function() { + this.$el.text(""); + } + }); + return Status; + }(); + var DefaultMenu = function() { + "use strict"; + var s = Menu.prototype; + function DefaultMenu() { + Menu.apply(this, [].slice.call(arguments, 0)); + } + _.mixin(DefaultMenu.prototype, Menu.prototype, { + open: function open() { + !this._allDatasetsEmpty() && this._show(); + return s.open.apply(this, [].slice.call(arguments, 0)); + }, + close: function close() { + this._hide(); + return s.close.apply(this, [].slice.call(arguments, 0)); + }, + _onRendered: function onRendered() { + if (this._allDatasetsEmpty()) { + this._hide(); + } else { + this.isOpen() && this._show(); + } + return s._onRendered.apply(this, [].slice.call(arguments, 0)); + }, + _onCleared: function onCleared() { + if (this._allDatasetsEmpty()) { + this._hide(); + } else { + this.isOpen() && this._show(); + } + return s._onCleared.apply(this, [].slice.call(arguments, 0)); + }, + setLanguageDirection: function setLanguageDirection(dir) { + this.$node.css(dir === "ltr" ? this.css.ltr : this.css.rtl); + return s.setLanguageDirection.apply(this, [].slice.call(arguments, 0)); + }, + _hide: function hide() { + this.$node.hide(); + }, + _show: function show() { + this.$node.css("display", "block"); + } + }); + return DefaultMenu; + }(); + var Typeahead = function() { + "use strict"; + function Typeahead(o, www) { + var onFocused, onBlurred, onEnterKeyed, onTabKeyed, onEscKeyed, onUpKeyed, onDownKeyed, onLeftKeyed, onRightKeyed, onQueryChanged, onWhitespaceChanged; + o = o || {}; + if (!o.input) { + $.error("missing input"); + } + if (!o.menu) { + $.error("missing menu"); + } + if (!o.eventBus) { + $.error("missing event bus"); + } + www.mixin(this); + this.eventBus = o.eventBus; + this.minLength = _.isNumber(o.minLength) ? o.minLength : 1; + this.input = o.input; + this.menu = o.menu; + this.enabled = true; + this.autoselect = !!o.autoselect; + this.active = false; + this.input.hasFocus() && this.activate(); + this.dir = this.input.getLangDir(); + this._hacks(); + this.menu.bind().onSync("selectableClicked", this._onSelectableClicked, this).onSync("asyncRequested", this._onAsyncRequested, this).onSync("asyncCanceled", this._onAsyncCanceled, this).onSync("asyncReceived", this._onAsyncReceived, this).onSync("datasetRendered", this._onDatasetRendered, this).onSync("datasetCleared", this._onDatasetCleared, this); + onFocused = c(this, "activate", "open", "_onFocused"); + onBlurred = c(this, "deactivate", "_onBlurred"); + onEnterKeyed = c(this, "isActive", "isOpen", "_onEnterKeyed"); + onTabKeyed = c(this, "isActive", "isOpen", "_onTabKeyed"); + onEscKeyed = c(this, "isActive", "_onEscKeyed"); + onUpKeyed = c(this, "isActive", "open", "_onUpKeyed"); + onDownKeyed = c(this, "isActive", "open", "_onDownKeyed"); + onLeftKeyed = c(this, "isActive", "isOpen", "_onLeftKeyed"); + onRightKeyed = c(this, "isActive", "isOpen", "_onRightKeyed"); + onQueryChanged = c(this, "_openIfActive", "_onQueryChanged"); + onWhitespaceChanged = c(this, "_openIfActive", "_onWhitespaceChanged"); + this.input.bind().onSync("focused", onFocused, this).onSync("blurred", onBlurred, this).onSync("enterKeyed", onEnterKeyed, this).onSync("tabKeyed", onTabKeyed, this).onSync("escKeyed", onEscKeyed, this).onSync("upKeyed", onUpKeyed, this).onSync("downKeyed", onDownKeyed, this).onSync("leftKeyed", onLeftKeyed, this).onSync("rightKeyed", onRightKeyed, this).onSync("queryChanged", onQueryChanged, this).onSync("whitespaceChanged", onWhitespaceChanged, this).onSync("langDirChanged", this._onLangDirChanged, this); + } + _.mixin(Typeahead.prototype, { + _hacks: function hacks() { + var $input, $menu; + $input = this.input.$input || $("
"); + $menu = this.menu.$node || $("
"); + $input.on("blur.tt", function($e) { + var active, isActive, hasActive; + active = document.activeElement; + isActive = $menu.is(active); + hasActive = $menu.has(active).length > 0; + if (_.isMsie() && (isActive || hasActive)) { + $e.preventDefault(); + $e.stopImmediatePropagation(); + _.defer(function() { + $input.focus(); + }); + } + }); + $menu.on("mousedown.tt", function($e) { + $e.preventDefault(); + }); + }, + _onSelectableClicked: function onSelectableClicked(type, $el) { + this.select($el); + }, + _onDatasetCleared: function onDatasetCleared() { + this._updateHint(); + }, + _onDatasetRendered: function onDatasetRendered(type, suggestions, async, dataset) { + this._updateHint(); + if (this.autoselect) { + var cursorClass = this.selectors.cursor.substr(1); + this.menu.$node.find(this.selectors.suggestion).first().addClass(cursorClass); + } + this.eventBus.trigger("render", suggestions, async, dataset); + }, + _onAsyncRequested: function onAsyncRequested(type, dataset, query) { + this.eventBus.trigger("asyncrequest", query, dataset); + }, + _onAsyncCanceled: function onAsyncCanceled(type, dataset, query) { + this.eventBus.trigger("asynccancel", query, dataset); + }, + _onAsyncReceived: function onAsyncReceived(type, dataset, query) { + this.eventBus.trigger("asyncreceive", query, dataset); + }, + _onFocused: function onFocused() { + this._minLengthMet() && this.menu.update(this.input.getQuery()); + }, + _onBlurred: function onBlurred() { + if (this.input.hasQueryChangedSinceLastFocus()) { + this.eventBus.trigger("change", this.input.getQuery()); + } + }, + _onEnterKeyed: function onEnterKeyed(type, $e) { + var $selectable; + if ($selectable = this.menu.getActiveSelectable()) { + if (this.select($selectable)) { + $e.preventDefault(); + $e.stopPropagation(); + } + } else if (this.autoselect) { + if (this.select(this.menu.getTopSelectable())) { + $e.preventDefault(); + $e.stopPropagation(); + } + } + }, + _onTabKeyed: function onTabKeyed(type, $e) { + var $selectable; + if ($selectable = this.menu.getActiveSelectable()) { + this.select($selectable) && $e.preventDefault(); + } else if (this.autoselect) { + if ($selectable = this.menu.getTopSelectable()) { + this.autocomplete($selectable) && $e.preventDefault(); + } + } + }, + _onEscKeyed: function onEscKeyed() { + this.close(); + }, + _onUpKeyed: function onUpKeyed() { + this.moveCursor(-1); + }, + _onDownKeyed: function onDownKeyed() { + this.moveCursor(+1); + }, + _onLeftKeyed: function onLeftKeyed() { + if (this.dir === "rtl" && this.input.isCursorAtEnd()) { + this.autocomplete(this.menu.getActiveSelectable() || this.menu.getTopSelectable()); + } + }, + _onRightKeyed: function onRightKeyed() { + if (this.dir === "ltr" && this.input.isCursorAtEnd()) { + this.autocomplete(this.menu.getActiveSelectable() || this.menu.getTopSelectable()); + } + }, + _onQueryChanged: function onQueryChanged(e, query) { + this._minLengthMet(query) ? this.menu.update(query) : this.menu.empty(); + }, + _onWhitespaceChanged: function onWhitespaceChanged() { + this._updateHint(); + }, + _onLangDirChanged: function onLangDirChanged(e, dir) { + if (this.dir !== dir) { + this.dir = dir; + this.menu.setLanguageDirection(dir); + } + }, + _openIfActive: function openIfActive() { + this.isActive() && this.open(); + }, + _minLengthMet: function minLengthMet(query) { + query = _.isString(query) ? query : this.input.getQuery() || ""; + return query.length >= this.minLength; + }, + _updateHint: function updateHint() { + var $selectable, data, val, query, escapedQuery, frontMatchRegEx, match; + $selectable = this.menu.getTopSelectable(); + data = this.menu.getSelectableData($selectable); + val = this.input.getInputValue(); + if (data && !_.isBlankString(val) && !this.input.hasOverflow()) { + query = Input.normalizeQuery(val); + escapedQuery = _.escapeRegExChars(query); + frontMatchRegEx = new RegExp("^(?:" + escapedQuery + ")(.+$)", "i"); + match = frontMatchRegEx.exec(data.val); + match && this.input.setHint(val + match[1]); + } else { + this.input.clearHint(); + } + }, + isEnabled: function isEnabled() { + return this.enabled; + }, + enable: function enable() { + this.enabled = true; + }, + disable: function disable() { + this.enabled = false; + }, + isActive: function isActive() { + return this.active; + }, + activate: function activate() { + if (this.isActive()) { + return true; + } else if (!this.isEnabled() || this.eventBus.before("active")) { + return false; + } else { + this.active = true; + this.eventBus.trigger("active"); + return true; + } + }, + deactivate: function deactivate() { + if (!this.isActive()) { + return true; + } else if (this.eventBus.before("idle")) { + return false; + } else { + this.active = false; + this.close(); + this.eventBus.trigger("idle"); + return true; + } + }, + isOpen: function isOpen() { + return this.menu.isOpen(); + }, + open: function open() { + if (!this.isOpen() && !this.eventBus.before("open")) { + this.input.setAriaExpanded(true); + this.menu.open(); + this._updateHint(); + this.eventBus.trigger("open"); + } + return this.isOpen(); + }, + close: function close() { + if (this.isOpen() && !this.eventBus.before("close")) { + this.input.setAriaExpanded(false); + this.menu.close(); + this.input.clearHint(); + this.input.resetInputValue(); + this.eventBus.trigger("close"); + } + return !this.isOpen(); + }, + setVal: function setVal(val) { + this.input.setQuery(_.toStr(val)); + }, + getVal: function getVal() { + return this.input.getQuery(); + }, + select: function select($selectable) { + var data = this.menu.getSelectableData($selectable); + if (data && !this.eventBus.before("select", data.obj, data.dataset)) { + this.input.setQuery(data.val, true); + this.eventBus.trigger("select", data.obj, data.dataset); + this.close(); + return true; + } + return false; + }, + autocomplete: function autocomplete($selectable) { + var query, data, isValid; + query = this.input.getQuery(); + data = this.menu.getSelectableData($selectable); + isValid = data && query !== data.val; + if (isValid && !this.eventBus.before("autocomplete", data.obj, data.dataset)) { + this.input.setQuery(data.val); + this.eventBus.trigger("autocomplete", data.obj, data.dataset); + return true; + } + return false; + }, + moveCursor: function moveCursor(delta) { + var query, $candidate, data, suggestion, datasetName, cancelMove, id; + query = this.input.getQuery(); + $candidate = this.menu.selectableRelativeToCursor(delta); + data = this.menu.getSelectableData($candidate); + suggestion = data ? data.obj : null; + datasetName = data ? data.dataset : null; + id = $candidate ? $candidate.attr("id") : null; + this.input.trigger("cursorchange", id); + cancelMove = this._minLengthMet() && this.menu.update(query); + if (!cancelMove && !this.eventBus.before("cursorchange", suggestion, datasetName)) { + this.menu.setCursor($candidate); + if (data) { + if (typeof data.val === "string") { + this.input.setInputValue(data.val); + } + } else { + this.input.resetInputValue(); + this._updateHint(); + } + this.eventBus.trigger("cursorchange", suggestion, datasetName); + return true; + } + return false; + }, + destroy: function destroy() { + this.input.destroy(); + this.menu.destroy(); + } + }); + return Typeahead; + function c(ctx) { + var methods = [].slice.call(arguments, 1); + return function() { + var args = [].slice.call(arguments); + _.each(methods, function(method) { + return ctx[method].apply(ctx, args); + }); + }; + } + }(); + (function() { + "use strict"; + var old, keys, methods; + old = $.fn.typeahead; + keys = { + www: "tt-www", + attrs: "tt-attrs", + typeahead: "tt-typeahead" + }; + methods = { + initialize: function initialize(o, datasets) { + var www; + datasets = _.isArray(datasets) ? datasets : [].slice.call(arguments, 1); + o = o || {}; + www = WWW(o.classNames); + return this.each(attach); + function attach() { + var $input, $wrapper, $hint, $menu, defaultHint, defaultMenu, eventBus, input, menu, status, typeahead, MenuConstructor; + _.each(datasets, function(d) { + d.highlight = !!o.highlight; + }); + $input = $(this); + $wrapper = $(www.html.wrapper); + $hint = $elOrNull(o.hint); + $menu = $elOrNull(o.menu); + defaultHint = o.hint !== false && !$hint; + defaultMenu = o.menu !== false && !$menu; + defaultHint && ($hint = buildHintFromInput($input, www)); + defaultMenu && ($menu = $(www.html.menu).css(www.css.menu)); + $hint && $hint.val(""); + $input = prepInput($input, www); + if (defaultHint || defaultMenu) { + $wrapper.css(www.css.wrapper); + $input.css(defaultHint ? www.css.input : www.css.inputWithNoHint); + $input.wrap($wrapper).parent().prepend(defaultHint ? $hint : null).append(defaultMenu ? $menu : null); + } + MenuConstructor = defaultMenu ? DefaultMenu : Menu; + eventBus = new EventBus({ + el: $input + }); + input = new Input({ + hint: $hint, + input: $input, + menu: $menu + }, www); + menu = new MenuConstructor({ + node: $menu, + datasets: datasets + }, www); + status = new Status({ + $input: $input, + menu: menu + }); + typeahead = new Typeahead({ + input: input, + menu: menu, + eventBus: eventBus, + minLength: o.minLength, + autoselect: o.autoselect + }, www); + $input.data(keys.www, www); + $input.data(keys.typeahead, typeahead); + } + }, + isEnabled: function isEnabled() { + var enabled; + ttEach(this.first(), function(t) { + enabled = t.isEnabled(); + }); + return enabled; + }, + enable: function enable() { + ttEach(this, function(t) { + t.enable(); + }); + return this; + }, + disable: function disable() { + ttEach(this, function(t) { + t.disable(); + }); + return this; + }, + isActive: function isActive() { + var active; + ttEach(this.first(), function(t) { + active = t.isActive(); + }); + return active; + }, + activate: function activate() { + ttEach(this, function(t) { + t.activate(); + }); + return this; + }, + deactivate: function deactivate() { + ttEach(this, function(t) { + t.deactivate(); + }); + return this; + }, + isOpen: function isOpen() { + var open; + ttEach(this.first(), function(t) { + open = t.isOpen(); + }); + return open; + }, + open: function open() { + ttEach(this, function(t) { + t.open(); + }); + return this; + }, + close: function close() { + ttEach(this, function(t) { + t.close(); + }); + return this; + }, + select: function select(el) { + var success = false, $el = $(el); + ttEach(this.first(), function(t) { + success = t.select($el); + }); + return success; + }, + autocomplete: function autocomplete(el) { + var success = false, $el = $(el); + ttEach(this.first(), function(t) { + success = t.autocomplete($el); + }); + return success; + }, + moveCursor: function moveCursoe(delta) { + var success = false; + ttEach(this.first(), function(t) { + success = t.moveCursor(delta); + }); + return success; + }, + val: function val(newVal) { + var query; + if (!arguments.length) { + ttEach(this.first(), function(t) { + query = t.getVal(); + }); + return query; + } else { + ttEach(this, function(t) { + t.setVal(_.toStr(newVal)); + }); + return this; + } + }, + destroy: function destroy() { + ttEach(this, function(typeahead, $input) { + revert($input); + typeahead.destroy(); + }); + return this; + } + }; + $.fn.typeahead = function(method) { + if (methods[method]) { + return methods[method].apply(this, [].slice.call(arguments, 1)); + } else { + return methods.initialize.apply(this, arguments); + } + }; + $.fn.typeahead.noConflict = function noConflict() { + $.fn.typeahead = old; + return this; + }; + function ttEach($els, fn) { + $els.each(function() { + var $input = $(this), typeahead; + (typeahead = $input.data(keys.typeahead)) && fn(typeahead, $input); + }); + } + function buildHintFromInput($input, www) { + return $input.clone().addClass(www.classes.hint).removeData().css(www.css.hint).css(getBackgroundStyles($input)).prop({ + readonly: true, + required: false + }).removeAttr("id name placeholder").removeClass("required").attr({ + spellcheck: "false", + tabindex: -1 + }); + } + function prepInput($input, www) { + $input.data(keys.attrs, { + dir: $input.attr("dir"), + autocomplete: $input.attr("autocomplete"), + spellcheck: $input.attr("spellcheck"), + style: $input.attr("style") + }); + $input.addClass(www.classes.input).attr({ + spellcheck: false + }); + try { + !$input.attr("dir") && $input.attr("dir", "auto"); + } catch (e) {} + return $input; + } + function getBackgroundStyles($el) { + return { + backgroundAttachment: $el.css("background-attachment"), + backgroundClip: $el.css("background-clip"), + backgroundColor: $el.css("background-color"), + backgroundImage: $el.css("background-image"), + backgroundOrigin: $el.css("background-origin"), + backgroundPosition: $el.css("background-position"), + backgroundRepeat: $el.css("background-repeat"), + backgroundSize: $el.css("background-size") + }; + } + function revert($input) { + var www, $wrapper; + www = $input.data(keys.www); + $wrapper = $input.parent().filter(www.selectors.wrapper); + _.each($input.data(keys.attrs), function(val, key) { + _.isUndefined(val) ? $input.removeAttr(key) : $input.attr(key, val); + }); + $input.removeData(keys.typeahead).removeData(keys.www).removeData(keys.attr).removeClass(www.classes.input); + if ($wrapper.length) { + $input.detach().insertAfter($wrapper); + $wrapper.remove(); + } + } + function $elOrNull(obj) { + var isValid, $el; + isValid = _.isJQuery(obj) || _.isElement(obj); + $el = isValid ? $(obj).first() : []; + return $el.length ? $el : null; + } + })(); +}); \ No newline at end of file diff --git a/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/search.json b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/search.json new file mode 100644 index 00000000..d37b3a86 --- /dev/null +++ b/3.0.0/docsets/Turf.docset/Contents/Resources/Documents/search.json @@ -0,0 +1 @@ +{"Typealiases.html#/s:4Turf17LocationDirectiona":{"name":"LocationDirection","abstract":"\u003cp\u003eAn azimuth measured in degrees clockwise from true north.\u003c/p\u003e"},"Typealiases.html#/s:4Turf16LocationDistancea":{"name":"LocationDistance","abstract":"\u003cp\u003eA distance in meters.\u003c/p\u003e"},"Typealiases.html#/s:4Turf15LocationDegreesa":{"name":"LocationDegrees","abstract":"\u003cp\u003eA latitude or longitude in degrees.\u003c/p\u003e"},"Typealiases.html#/s:4Turf20LocationCoordinate2Da":{"name":"LocationCoordinate2D","abstract":"\u003cp\u003eA geographic coordinate.\u003c/p\u003e"},"Typealiases.html#/LocationDirection":{"name":"LocationDirection","abstract":"\u003cp\u003eAn azimuth measured in degrees clockwise from true north.\u003c/p\u003e"},"Typealiases.html#/LocationDistance":{"name":"LocationDistance","abstract":"\u003cp\u003eA distance in meters.\u003c/p\u003e"},"Typealiases.html#/LocationDegrees":{"name":"LocationDegrees","abstract":"\u003cp\u003eA latitude or longitude in degrees.\u003c/p\u003e"},"Typealiases.html#/s:4Turf9JSONArraya":{"name":"JSONArray","abstract":"\u003cp\u003eA JSON array of \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbEnums/JSONValue.html\"\u003eJSONValue\u003c/a\u003e\u003c/code\u003e instances.\u003c/p\u003e"},"Typealiases.html#/s:4Turf10JSONObjecta":{"name":"JSONObject","abstract":"\u003cp\u003eA JSON object represented in memory by a dictionary with strings as keys and \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbEnums/JSONValue.html\"\u003eJSONValue\u003c/a\u003e\u003c/code\u003e instances as values.\u003c/p\u003e"},"Typealiases.html#/s:4Turf15LocationRadiansa":{"name":"LocationRadians","abstract":"\u003cp\u003eA latitude or longitude measured in radians, as opposed to \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbTypealiases.html#/s:4Turf15LocationDegreesa\"\u003eLocationDegrees\u003c/a\u003e\u003c/code\u003e, which is measured in degrees of arc.\u003c/p\u003e"},"Typealiases.html#/s:4Turf14RadianDistancea":{"name":"RadianDistance","abstract":"\u003cp\u003eA difference in latitude or longitude measured in radians, as opposed to \u003ccode\u003eCLLocationDegrees\u003c/code\u003e, which is used by some libraries to represent a similar distance measured in degrees of arc.\u003c/p\u003e"},"Typealiases.html#/s:4Turf11LineSegmenta":{"name":"LineSegment","abstract":"\u003cp\u003eA segment between two positions in a \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/LineString.html\"\u003eLineString\u003c/a\u003e\u003c/code\u003e geometry or \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/Ring.html\"\u003eRing\u003c/a\u003e\u003c/code\u003e.\u003c/p\u003e"},"Structs/Ring.html#/s:4Turf4RingV11coordinatesSaySo22CLLocationCoordinate2DVGvp":{"name":"coordinates","abstract":"\u003cp\u003eThe positions at which the linear ring is located.\u003c/p\u003e","parent_name":"Ring"},"Structs/Ring.html#/s:4Turf4RingV11coordinatesACSaySo22CLLocationCoordinate2DVG_tcfc":{"name":"init(coordinates:)","abstract":"\u003cp\u003eInitializes a linear ring defined by the given positions.\u003c/p\u003e","parent_name":"Ring"},"Structs/Ring.html#/s:4Turf4RingV4areaSdvp":{"name":"area","abstract":"\u003cp\u003eCalculate the approximate area of the polygon were it projected onto the earth, in square meters.","parent_name":"Ring"},"Structs/Ring.html#/s:4Turf4RingV8contains_14ignoreBoundarySbSo22CLLocationCoordinate2DV_SbtF":{"name":"contains(_:ignoreBoundary:)","abstract":"\u003cp\u003eDetermines if the given point falls within the ring.","parent_name":"Ring"},"Structs/Ring.html#/s:Se4fromxs7Decoder_p_tKcfc":{"name":"init(from:)","parent_name":"Ring"},"Structs/Ring.html#/s:SE6encode2toys7Encoder_p_tKF":{"name":"encode(to:)","parent_name":"Ring"},"Structs/RadianCoordinate2D.html#/s:4Turf18RadianCoordinate2DV8latitude9longitudeACSd_Sdtcfc":{"name":"init(latitude:longitude:)","abstract":"\u003cp\u003eInitializes a coordinate pair located at the given latitude and longitude.\u003c/p\u003e","parent_name":"RadianCoordinate2D"},"Structs/RadianCoordinate2D.html#/s:4Turf18RadianCoordinate2DVyACSo010CLLocationC1DVcfc":{"name":"init(_:)","abstract":"\u003cp\u003eInitializes a coordinate pair measured in radians that is coincident to the given coordinate pair measured in degrees of arc.\u003c/p\u003e","parent_name":"RadianCoordinate2D"},"Structs/RadianCoordinate2D.html#/s:4Turf18RadianCoordinate2DV9direction2to10Foundation11MeasurementVySo11NSUnitAngleCGAC_tF":{"name":"direction(to:)","abstract":"\u003cp\u003eReturns direction given two coordinates.\u003c/p\u003e","parent_name":"RadianCoordinate2D"},"Structs/RadianCoordinate2D.html#/s:4Turf18RadianCoordinate2DV10coordinate2at6facingACSd_10Foundation11MeasurementVySo11NSUnitAngleCGtF":{"name":"coordinate(at:facing:)","abstract":"\u003cp\u003eReturns coordinate at a given distance and direction away from coordinate.\u003c/p\u003e","parent_name":"RadianCoordinate2D"},"Structs/RadianCoordinate2D.html#/s:4Turf18RadianCoordinate2DV8distance2toSdAC_tF":{"name":"distance(to:)","abstract":"\u003cp\u003eReturns the Haversine distance between two coordinates measured in radians.\u003c/p\u003e","parent_name":"RadianCoordinate2D"},"Structs/Polygon.html#/s:4Turf7PolygonV11coordinatesSaySaySo22CLLocationCoordinate2DVGGvp":{"name":"coordinates","abstract":"\u003cp\u003eThe positions at which the polygon is located. Each nested array corresponds to one linear ring.\u003c/p\u003e","parent_name":"Polygon"},"Structs/Polygon.html#/s:4Turf22ForeignMemberContainerP14foreignMembersSDySSAA9JSONValueOSgGvp":{"name":"foreignMembers","parent_name":"Polygon"},"Structs/Polygon.html#/s:4Turf7PolygonVyACSaySaySo22CLLocationCoordinate2DVGGcfc":{"name":"init(_:)","abstract":"\u003cp\u003eInitializes a polygon defined by the given positions.\u003c/p\u003e","parent_name":"Polygon"},"Structs/Polygon.html#/s:4Turf7PolygonV9outerRing10innerRingsAcA0D0V_SayAGGtcfc":{"name":"init(outerRing:innerRings:)","abstract":"\u003cp\u003eInitializes a polygon defined by the given linear rings.\u003c/p\u003e","parent_name":"Polygon"},"Structs/Polygon.html#/s:4Turf7PolygonV6center6radius8verticesACSo22CLLocationCoordinate2DV_SdSitcfc":{"name":"init(center:radius:vertices:)","abstract":"\u003cp\u003eInitializes a polygon as a given center coordinate with a given number of","parent_name":"Polygon"},"Structs/Polygon.html#/s:Se4fromxs7Decoder_p_tKcfc":{"name":"init(from:)","parent_name":"Polygon"},"Structs/Polygon.html#/s:SE6encode2toys7Encoder_p_tKF":{"name":"encode(to:)","parent_name":"Polygon"},"Structs/Polygon.html#/s:4Turf7PolygonV10innerRingsSayAA4RingVGvp":{"name":"innerRings","abstract":"\u003cp\u003eRepresentation of \u003ccode\u003ePolygon\u003c/code\u003es coordinates of inner rings\u003c/p\u003e","parent_name":"Polygon"},"Structs/Polygon.html#/s:4Turf7PolygonV9outerRingAA0D0Vvp":{"name":"outerRing","abstract":"\u003cp\u003eRepresentation of \u003ccode\u003ePolygon\u003c/code\u003es coordinates of outer ring\u003c/p\u003e","parent_name":"Polygon"},"Structs/Polygon.html#/s:4Turf7PolygonV4areaSdvp":{"name":"area","abstract":"\u003cp\u003eThe polygon’s area.\u003c/p\u003e","parent_name":"Polygon"},"Structs/Polygon.html#/s:4Turf7PolygonV8contains_14ignoreBoundarySbSo22CLLocationCoordinate2DV_SbtF":{"name":"contains(_:ignoreBoundary:)","abstract":"\u003cp\u003eReturns whether the given coordinate falls within the polygon and outside of its interior rings.\u003c/p\u003e","parent_name":"Polygon"},"Structs/Polygon.html#/s:4Turf7PolygonV6smooth10iterationsACSi_tF":{"name":"smooth(iterations:)","abstract":"\u003cp\u003eReturns the polygon with corners smoothed out using \u003ca href=\"https://www.cs.unc.edu/%7Edm/UNC/COMP258/LECTURES/Chaikins-Algorithm.pdf\"\u003eChaikin’s algorithm\u003c/a\u003e.\u003c/p\u003e","parent_name":"Polygon"},"Structs/Polygon.html#/s:4Turf7PolygonV10simplified9tolerance14highestQualityACSd_SbtF":{"name":"simplified(tolerance:highestQuality:)","abstract":"\u003cp\u003eReturns a copy of the polygon simplified using the Ramer–Douglas–Peucker algorithm.\u003c/p\u003e","parent_name":"Polygon"},"Structs/Polygon.html#/s:4Turf7PolygonV8simplify9tolerance14highestQualityySd_SbtF":{"name":"simplify(tolerance:highestQuality:)","abstract":"\u003cp\u003eSimplifies the polygon in place using the Ramer–Douglas–Peucker algorithm.\u003c/p\u003e","parent_name":"Polygon"},"Structs/Polygon.html#/s:4Turf7PolygonV6centerSo22CLLocationCoordinate2DVSgvp":{"name":"center","abstract":"\u003cp\u003eCalculates the absolute center of the bounding box.\u003c/p\u003e","parent_name":"Polygon"},"Structs/Polygon.html#/s:4Turf7PolygonV8centroidSo22CLLocationCoordinate2DVSgvp":{"name":"centroid","abstract":"\u003cp\u003eCalculates the centroid using the mean of all vertices.\u003c/p\u003e","parent_name":"Polygon"},"Structs/Polygon.html#/s:4Turf7PolygonV12centerOfMassSo22CLLocationCoordinate2DVSgvp":{"name":"centerOfMass","abstract":"\u003cp\u003eCalculates the \u003ca href=\"https://en.wikipedia.org/wiki/Center_of_mass\"\u003ecenter of mass\u003c/a\u003e using the \u003ca href=\"https://en.wikipedia.org/wiki/Centroid#Centroid_of_polygon\"\u003ecentroid of polygon\u003c/a\u003e formula.\u003c/p\u003e","parent_name":"Polygon"},"Structs/Polygon.html#/s:4Turf19GeometryConvertibleP8geometryAA0B0Ovp":{"name":"geometry","parent_name":"Polygon"},"Structs/Polygon.html#/s:4Turf7PolygonV3wktSSvp":{"name":"wkt","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Polygon"},"Structs/Polygon.html#/s:4Turf7PolygonV3wktACSS_tKcfc":{"name":"init(wkt:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Polygon"},"Structs/Point.html#/s:4Turf5PointV11coordinatesSo22CLLocationCoordinate2DVvp":{"name":"coordinates","abstract":"\u003cp\u003eThe position at which the point is located.\u003c/p\u003e","parent_name":"Point"},"Structs/Point.html#/s:4Turf22ForeignMemberContainerP14foreignMembersSDySSAA9JSONValueOSgGvp":{"name":"foreignMembers","parent_name":"Point"},"Structs/Point.html#/s:4Turf5PointVyACSo22CLLocationCoordinate2DVcfc":{"name":"init(_:)","abstract":"\u003cp\u003eInitializes a point defined by the given position.\u003c/p\u003e","parent_name":"Point"},"Structs/Point.html#/s:Se4fromxs7Decoder_p_tKcfc":{"name":"init(from:)","parent_name":"Point"},"Structs/Point.html#/s:SE6encode2toys7Encoder_p_tKF":{"name":"encode(to:)","parent_name":"Point"},"Structs/Point.html#/s:4Turf19GeometryConvertibleP8geometryAA0B0Ovp":{"name":"geometry","parent_name":"Point"},"Structs/Point.html#/s:4Turf5PointV3wktSSvp":{"name":"wkt","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Point"},"Structs/Point.html#/s:4Turf5PointV3wktACSS_tKcfc":{"name":"init(wkt:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Point"},"Structs/MultiPolygon.html#/s:4Turf12MultiPolygonV11coordinatesSaySaySaySo22CLLocationCoordinate2DVGGGvp":{"name":"coordinates","abstract":"\u003cp\u003eThe positions at which the multipolygon is located. Each nested array corresponds to one polygon.\u003c/p\u003e","parent_name":"MultiPolygon"},"Structs/MultiPolygon.html#/s:4Turf22ForeignMemberContainerP14foreignMembersSDySSAA9JSONValueOSgGvp":{"name":"foreignMembers","parent_name":"MultiPolygon"},"Structs/MultiPolygon.html#/s:4Turf12MultiPolygonV8polygonsSayAA0C0VGvp":{"name":"polygons","abstract":"\u003cp\u003eThe polygon geometries that conceptually form the multipolygon.\u003c/p\u003e","parent_name":"MultiPolygon"},"Structs/MultiPolygon.html#/s:4Turf12MultiPolygonVyACSaySaySaySo22CLLocationCoordinate2DVGGGcfc":{"name":"init(_:)","abstract":"\u003cp\u003eInitializes a multipolygon defined by the given positions.\u003c/p\u003e","parent_name":"MultiPolygon"},"Structs/MultiPolygon.html#/s:4Turf12MultiPolygonVyACSayAA0C0VGcfc":{"name":"init(_:)","abstract":"\u003cp\u003eInitializes a multipolygon coincident to the given polygons.\u003c/p\u003e","parent_name":"MultiPolygon"},"Structs/MultiPolygon.html#/s:Se4fromxs7Decoder_p_tKcfc":{"name":"init(from:)","parent_name":"MultiPolygon"},"Structs/MultiPolygon.html#/s:SE6encode2toys7Encoder_p_tKF":{"name":"encode(to:)","parent_name":"MultiPolygon"},"Structs/MultiPolygon.html#/s:4Turf12MultiPolygonV8contains_14ignoreBoundarySbSo22CLLocationCoordinate2DV_SbtF":{"name":"contains(_:ignoreBoundary:)","abstract":"\u003cp\u003eDetermines if the given coordinate falls within any of the polygons.","parent_name":"MultiPolygon"},"Structs/MultiPolygon.html#/s:4Turf19GeometryConvertibleP8geometryAA0B0Ovp":{"name":"geometry","parent_name":"MultiPolygon"},"Structs/MultiPolygon.html#/s:4Turf12MultiPolygonV3wktSSvp":{"name":"wkt","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MultiPolygon"},"Structs/MultiPolygon.html#/s:4Turf12MultiPolygonV3wktACSS_tKcfc":{"name":"init(wkt:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MultiPolygon"},"Structs/MultiPoint.html#/s:4Turf10MultiPointV11coordinatesSaySo22CLLocationCoordinate2DVGvp":{"name":"coordinates","abstract":"\u003cp\u003eThe positions at which the multipoint is located.\u003c/p\u003e","parent_name":"MultiPoint"},"Structs/MultiPoint.html#/s:4Turf22ForeignMemberContainerP14foreignMembersSDySSAA9JSONValueOSgGvp":{"name":"foreignMembers","parent_name":"MultiPoint"},"Structs/MultiPoint.html#/s:4Turf10MultiPointVyACSaySo22CLLocationCoordinate2DVGcfc":{"name":"init(_:)","abstract":"\u003cp\u003eInitializes a multipoint defined by the given positions.\u003c/p\u003e","parent_name":"MultiPoint"},"Structs/MultiPoint.html#/s:Se4fromxs7Decoder_p_tKcfc":{"name":"init(from:)","parent_name":"MultiPoint"},"Structs/MultiPoint.html#/s:SE6encode2toys7Encoder_p_tKF":{"name":"encode(to:)","parent_name":"MultiPoint"},"Structs/MultiPoint.html#/s:4Turf19GeometryConvertibleP8geometryAA0B0Ovp":{"name":"geometry","parent_name":"MultiPoint"},"Structs/MultiPoint.html#/s:4Turf10MultiPointV3wktSSvp":{"name":"wkt","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MultiPoint"},"Structs/MultiPoint.html#/s:4Turf10MultiPointV3wktACSS_tKcfc":{"name":"init(wkt:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MultiPoint"},"Structs/MultiLineString.html#/s:4Turf15MultiLineStringV11coordinatesSaySaySo22CLLocationCoordinate2DVGGvp":{"name":"coordinates","abstract":"\u003cp\u003eThe positions at which the multi–line string is located. Each nested array corresponds to one line string.\u003c/p\u003e","parent_name":"MultiLineString"},"Structs/MultiLineString.html#/s:4Turf22ForeignMemberContainerP14foreignMembersSDySSAA9JSONValueOSgGvp":{"name":"foreignMembers","parent_name":"MultiLineString"},"Structs/MultiLineString.html#/s:4Turf15MultiLineStringVyACSaySaySo22CLLocationCoordinate2DVGGcfc":{"name":"init(_:)","abstract":"\u003cp\u003eInitializes a multi–line string defined by the given positions.\u003c/p\u003e","parent_name":"MultiLineString"},"Structs/MultiLineString.html#/s:4Turf15MultiLineStringVyAcA7PolygonVcfc":{"name":"init(_:)","abstract":"\u003cp\u003eInitializes a multi–line string coincident to the given polygon’s linear rings.\u003c/p\u003e","parent_name":"MultiLineString"},"Structs/MultiLineString.html#/s:Se4fromxs7Decoder_p_tKcfc":{"name":"init(from:)","parent_name":"MultiLineString"},"Structs/MultiLineString.html#/s:SE6encode2toys7Encoder_p_tKF":{"name":"encode(to:)","parent_name":"MultiLineString"},"Structs/MultiLineString.html#/s:4Turf19GeometryConvertibleP8geometryAA0B0Ovp":{"name":"geometry","parent_name":"MultiLineString"},"Structs/MultiLineString.html#/s:4Turf15MultiLineStringV3wktSSvp":{"name":"wkt","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MultiLineString"},"Structs/MultiLineString.html#/s:4Turf15MultiLineStringV3wktACSS_tKcfc":{"name":"init(wkt:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MultiLineString"},"Structs/LineString/IndexedCoordinate.html#/s:4Turf10LineStringV17IndexedCoordinateV10coordinateSo22CLLocationCoordinate2DVvp":{"name":"coordinate","abstract":"\u003cp\u003eThe coordinate\u003c/p\u003e","parent_name":"IndexedCoordinate"},"Structs/LineString/IndexedCoordinate.html#/s:4Turf10LineStringV17IndexedCoordinateV8distanceSdvp":{"name":"distance","abstract":"\u003cp\u003eThe coordinate’s distance from the start of the polyline\u003c/p\u003e","parent_name":"IndexedCoordinate"},"Structs/LineString.html#/s:4Turf10LineStringV11coordinatesSaySo22CLLocationCoordinate2DVGvp":{"name":"coordinates","abstract":"\u003cp\u003eThe positions at which the line string is located.\u003c/p\u003e","parent_name":"LineString"},"Structs/LineString.html#/s:4Turf22ForeignMemberContainerP14foreignMembersSDySSAA9JSONValueOSgGvp":{"name":"foreignMembers","parent_name":"LineString"},"Structs/LineString.html#/s:4Turf10LineStringVyACSaySo22CLLocationCoordinate2DVGcfc":{"name":"init(_:)","abstract":"\u003cp\u003eInitializes a line string defined by given positions.\u003c/p\u003e","parent_name":"LineString"},"Structs/LineString.html#/s:4Turf10LineStringVyAcA4RingVcfc":{"name":"init(_:)","abstract":"\u003cp\u003eInitializes a line string coincident to the given linear ring.\u003c/p\u003e","parent_name":"LineString"},"Structs/LineString.html#/s:Se4fromxs7Decoder_p_tKcfc":{"name":"init(from:)","parent_name":"LineString"},"Structs/LineString.html#/s:SE6encode2toys7Encoder_p_tKF":{"name":"encode(to:)","parent_name":"LineString"},"Structs/LineString.html#/s:4Turf10LineStringV6bezier10resolution9sharpnessACSgSi_SdtF":{"name":"bezier(resolution:sharpness:)","abstract":"\u003cp\u003eReturns the line string transformed into an approximation of a curve by applying a Bézier spline algorithm.\u003c/p\u003e","parent_name":"LineString"},"Structs/LineString.html#/s:4Turf10LineStringV7trimmed4from2toACSgSd_SdtF":{"name":"trimmed(from:to:)","abstract":"\u003cp\u003eReturns the portion of the line string that begins at the given start distance and extends the given stop distance along the line string.\u003c/p\u003e","parent_name":"LineString"},"Structs/LineString.html#/s:4Turf10LineStringV7trimmed4from8distanceACSgSo22CLLocationCoordinate2DV_SdtF":{"name":"trimmed(from:distance:)","abstract":"\u003cp\u003eReturns the portion of the line string that begins at the given coordinate and extends the given distance along the line string.\u003c/p\u003e","parent_name":"LineString"},"Structs/LineString/IndexedCoordinate.html":{"name":"IndexedCoordinate","abstract":"\u003cp\u003e\u003ccode\u003eIndexedCoordinate\u003c/code\u003e is a coordinate with additional information such as the index from its position in the polyline and distance from the start of the polyline.\u003c/p\u003e","parent_name":"LineString"},"Structs/LineString.html#/s:4Turf10LineStringV19coordinateFromStart8distanceSo22CLLocationCoordinate2DVSgSd_tF":{"name":"coordinateFromStart(distance:)","abstract":"\u003cp\u003eReturns a coordinate along a line string at a certain distance from the start of the polyline.\u003c/p\u003e","parent_name":"LineString"},"Structs/LineString.html#/s:4Turf10LineStringV26indexedCoordinateFromStart8distanceAC07IndexedE0VSgSd_tF":{"name":"indexedCoordinateFromStart(distance:)","abstract":"\u003cp\u003eReturns an indexed coordinate along a line string at a certain distance from the start of the polyline.\u003c/p\u003e","parent_name":"LineString"},"Structs/LineString.html#/s:4Turf10LineStringV8distance4from2toSdSgSo22CLLocationCoordinate2DVSg_AJtF":{"name":"distance(from:to:)","abstract":"\u003cp\u003eReturns the distance along a slice of the line string with the given endpoints.\u003c/p\u003e","parent_name":"LineString"},"Structs/LineString.html#/s:4Turf10LineStringV6sliced4from2toACSgSo22CLLocationCoordinate2DVSg_AJtF":{"name":"sliced(from:to:)","abstract":"\u003cp\u003eReturns a subset of the line string between two given coordinates.\u003c/p\u003e","parent_name":"LineString"},"Structs/LineString.html#/s:4Turf10LineStringV17closestCoordinate2toAC07IndexedE0VSgSo22CLLocationCoordinate2DV_tF":{"name":"closestCoordinate(to:)","abstract":"\u003cp\u003eReturns the geographic coordinate along the line string that is closest to the given coordinate as the crow flies.\u003c/p\u003e","parent_name":"LineString"},"Structs/LineString.html#/s:4Turf10LineStringV10simplified9tolerance14highestQualityACSd_SbtF":{"name":"simplified(tolerance:highestQuality:)","abstract":"\u003cp\u003eReturns a copy of the line string simplified using the Ramer–Douglas–Peucker algorithm.\u003c/p\u003e","parent_name":"LineString"},"Structs/LineString.html#/s:4Turf10LineStringV8simplify9tolerance14highestQualityySd_SbtF":{"name":"simplify(tolerance:highestQuality:)","abstract":"\u003cp\u003eSimplifies the line string in place using the Ramer–Douglas–Peucker algorithm.\u003c/p\u003e","parent_name":"LineString"},"Structs/LineString.html#/s:4Turf10LineStringV13intersections4withSaySo22CLLocationCoordinate2DVGAC_tF":{"name":"intersections(with:)","abstract":"\u003cp\u003eReturns all intersections with another \u003ccode\u003eLineString\u003c/code\u003e.\u003c/p\u003e","parent_name":"LineString"},"Structs/LineString.html#/s:4Turf19GeometryConvertibleP8geometryAA0B0Ovp":{"name":"geometry","parent_name":"LineString"},"Structs/LineString.html#/s:4Turf10LineStringV3wktSSvp":{"name":"wkt","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"LineString"},"Structs/LineString.html#/s:4Turf10LineStringV3wktACSS_tKcfc":{"name":"init(wkt:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"LineString"},"Structs/GeometryCollection.html#/s:4Turf18GeometryCollectionV10geometriesSayAA0B0OGvp":{"name":"geometries","abstract":"\u003cp\u003eThe geometries contained by the geometry collection.\u003c/p\u003e","parent_name":"GeometryCollection"},"Structs/GeometryCollection.html#/s:4Turf22ForeignMemberContainerP14foreignMembersSDySSAA9JSONValueOSgGvp":{"name":"foreignMembers","parent_name":"GeometryCollection"},"Structs/GeometryCollection.html#/s:4Turf18GeometryCollectionV10geometriesACSayAA0B0OG_tcfc":{"name":"init(geometries:)","abstract":"\u003cp\u003eInitializes a geometry collection defined by the given geometries.\u003c/p\u003e","parent_name":"GeometryCollection"},"Structs/GeometryCollection.html#/s:4Turf18GeometryCollectionVyAcA12MultiPolygonVcfc":{"name":"init(_:)","abstract":"\u003cp\u003eInitializes a geometry collection coincident to the given multipolygon.\u003c/p\u003e","parent_name":"GeometryCollection"},"Structs/GeometryCollection.html#/s:Se4fromxs7Decoder_p_tKcfc":{"name":"init(from:)","parent_name":"GeometryCollection"},"Structs/GeometryCollection.html#/s:SE6encode2toys7Encoder_p_tKF":{"name":"encode(to:)","parent_name":"GeometryCollection"},"Structs/GeometryCollection.html#/s:4Turf19GeometryConvertibleP8geometryAA0B0Ovp":{"name":"geometry","parent_name":"GeometryCollection"},"Structs/GeometryCollection.html#/s:4Turf18GeometryCollectionV3wktSSvp":{"name":"wkt","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"GeometryCollection"},"Structs/GeometryCollection.html#/s:4Turf18GeometryCollectionV3wktACSS_tKcfc":{"name":"init(wkt:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"GeometryCollection"},"Structs/FeatureCollection.html#/s:4Turf17FeatureCollectionV8featuresSayAA0B0VGvp":{"name":"features","abstract":"\u003cp\u003eThe features that the collection contains.\u003c/p\u003e","parent_name":"FeatureCollection"},"Structs/FeatureCollection.html#/s:4Turf22ForeignMemberContainerP14foreignMembersSDySSAA9JSONValueOSgGvp":{"name":"foreignMembers","parent_name":"FeatureCollection"},"Structs/FeatureCollection.html#/s:4Turf17FeatureCollectionV8featuresACSayAA0B0VG_tcfc":{"name":"init(features:)","abstract":"\u003cp\u003eInitializes a feature collection containing the given features.\u003c/p\u003e","parent_name":"FeatureCollection"},"Structs/FeatureCollection.html#/s:Se4fromxs7Decoder_p_tKcfc":{"name":"init(from:)","parent_name":"FeatureCollection"},"Structs/FeatureCollection.html#/s:SE6encode2toys7Encoder_p_tKF":{"name":"encode(to:)","parent_name":"FeatureCollection"},"Structs/FeatureCollection.html#/s:4Turf24GeoJSONObjectConvertibleP03geoC0AA0bC0Ovp":{"name":"geoJSONObject","parent_name":"FeatureCollection"},"Structs/Feature.html#/s:4Turf7FeatureV10identifierAA0B10IdentifierOSgvp":{"name":"identifier","abstract":"\u003cp\u003eA string or number that commonly identifies the feature in the context of a data set.\u003c/p\u003e","parent_name":"Feature"},"Structs/Feature.html#/s:4Turf7FeatureV10propertiesSDySSAA9JSONValueOSgGSgvp":{"name":"properties","abstract":"\u003cp\u003eArbitrary, JSON-compatible attributes to associate with the feature.\u003c/p\u003e","parent_name":"Feature"},"Structs/Feature.html#/s:4Turf7FeatureV8geometryAA8GeometryOSgvp":{"name":"geometry","abstract":"\u003cp\u003eThe geometry at which the feature is located.\u003c/p\u003e","parent_name":"Feature"},"Structs/Feature.html#/s:4Turf22ForeignMemberContainerP14foreignMembersSDySSAA9JSONValueOSgGvp":{"name":"foreignMembers","parent_name":"Feature"},"Structs/Feature.html#/s:4Turf7FeatureV8geometryAcA8GeometryO_tcfc":{"name":"init(geometry:)","abstract":"\u003cp\u003eInitializes a feature located at the given geometry.\u003c/p\u003e","parent_name":"Feature"},"Structs/Feature.html#/s:4Turf7FeatureV8geometryAcA19GeometryConvertible_pSg_tcfc":{"name":"init(geometry:)","abstract":"\u003cp\u003eInitializes a feature defined by the given geometry-convertible instance.\u003c/p\u003e","parent_name":"Feature"},"Structs/Feature.html#/s:Se4fromxs7Decoder_p_tKcfc":{"name":"init(from:)","parent_name":"Feature"},"Structs/Feature.html#/s:SE6encode2toys7Encoder_p_tKF":{"name":"encode(to:)","parent_name":"Feature"},"Structs/Feature.html#/s:4Turf24GeoJSONObjectConvertibleP03geoC0AA0bC0Ovp":{"name":"geoJSONObject","parent_name":"Feature"},"Structs/LocationCoordinate2D.html#/latitude":{"name":"latitude","abstract":"\u003cp\u003eThe latitude in degrees.\u003c/p\u003e","parent_name":"LocationCoordinate2D"},"Structs/LocationCoordinate2D.html#/longitude":{"name":"longitude","abstract":"\u003cp\u003eThe longitude in degrees.\u003c/p\u003e","parent_name":"LocationCoordinate2D"},"Structs/LocationCoordinate2D.html#/init(latitude:longitude:)":{"name":"init(latitude:longitude:)","abstract":"\u003cp\u003eCreates a degree-based geographic coordinate.\u003c/p\u003e","parent_name":"LocationCoordinate2D"},"Structs/BoundingBox.html#/s:4Turf11BoundingBoxV9southWestSo22CLLocationCoordinate2DVvp":{"name":"southWest","abstract":"\u003cp\u003eThe southwesternmost position contained in the bounding box.\u003c/p\u003e","parent_name":"BoundingBox"},"Structs/BoundingBox.html#/s:4Turf11BoundingBoxV9northEastSo22CLLocationCoordinate2DVvp":{"name":"northEast","abstract":"\u003cp\u003eThe northeasternmost position contained in the bounding box.\u003c/p\u003e","parent_name":"BoundingBox"},"Structs/BoundingBox.html#/s:4Turf11BoundingBoxV4fromACSgSaySo22CLLocationCoordinate2DVGSg_tcfc":{"name":"init(from:)","abstract":"\u003cp\u003eInitializes the smallest bounding box that contains all the given coordinates.\u003c/p\u003e","parent_name":"BoundingBox"},"Structs/BoundingBox.html#/s:4Turf11BoundingBoxV9southWest9northEastACSo22CLLocationCoordinate2DV_AGtcfc":{"name":"init(southWest:northEast:)","abstract":"\u003cp\u003eInitializes a bounding box defined by its southwesternmost and northeasternmost positions.\u003c/p\u003e","parent_name":"BoundingBox"},"Structs/BoundingBox.html#/s:4Turf11BoundingBoxV8contains_14ignoreBoundarySbSo22CLLocationCoordinate2DV_SbtF":{"name":"contains(_:ignoreBoundary:)","abstract":"\u003cp\u003eReturns a Boolean value indicating whether the bounding box contains the given position.\u003c/p\u003e","parent_name":"BoundingBox"},"Structs/BoundingBox.html#/s:SH4hash4intoys6HasherVz_tF":{"name":"hash(into:)","parent_name":"BoundingBox"},"Structs/BoundingBox.html#/s:SE6encode2toys7Encoder_p_tKF":{"name":"encode(to:)","parent_name":"BoundingBox"},"Structs/BoundingBox.html#/s:Se4fromxs7Decoder_p_tKcfc":{"name":"init(from:)","parent_name":"BoundingBox"},"Structs/BoundingBox.html":{"name":"BoundingBox","abstract":"\u003cp\u003eA \u003ca href=\"https://datatracker.ietf.org/doc/html/rfc7946#section-5\"\u003ebounding box\u003c/a\u003e indicates the extremes of a \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbEnums/GeoJSONObject.html\"\u003eGeoJSONObject\u003c/a\u003e\u003c/code\u003e along the x- and y-axes (longitude and latitude, respectively).\u003c/p\u003e"},"Structs/LocationCoordinate2D.html":{"name":"LocationCoordinate2D","abstract":"\u003cp\u003eA geographic coordinate with its components measured in degrees.\u003c/p\u003e"},"Structs/Feature.html":{"name":"Feature","abstract":"\u003cp\u003eA \u003ca href=\"https://datatracker.ietf.org/doc/html/rfc7946#section-3.2\"\u003eFeature object\u003c/a\u003e represents a spatially bounded thing.\u003c/p\u003e"},"Structs/FeatureCollection.html":{"name":"FeatureCollection","abstract":"\u003cp\u003eA \u003ca href=\"https://datatracker.ietf.org/doc/html/rfc7946#section-3.3\"\u003eFeatureCollection object\u003c/a\u003e is a collection of Feature objects.\u003c/p\u003e"},"Structs/GeometryCollection.html":{"name":"GeometryCollection","abstract":"\u003cp\u003eA \u003ca href=\"https://datatracker.ietf.org/doc/html/rfc7946#section-3.1.8\"\u003eGeometryCollection geometry\u003c/a\u003e is a heterogeneous collection of \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbEnums/Geometry.html\"\u003eGeometry\u003c/a\u003e\u003c/code\u003e objects that are related.\u003c/p\u003e"},"Structs/LineString.html":{"name":"LineString","abstract":"\u003cp\u003eA \u003ca href=\"https://datatracker.ietf.org/doc/html/rfc7946#section-3.1.4\"\u003eLineString geometry\u003c/a\u003e is a collection of two or more positions, each position connected to the next position linearly.\u003c/p\u003e"},"Structs/MultiLineString.html":{"name":"MultiLineString","abstract":"\u003cp\u003eA \u003ca href=\"https://datatracker.ietf.org/doc/html/rfc7946#section-3.1.5\"\u003eMultiLineString geometry\u003c/a\u003e is a collection of \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/LineString.html\"\u003eLineString\u003c/a\u003e\u003c/code\u003e geometries that are disconnected but related.\u003c/p\u003e"},"Structs/MultiPoint.html":{"name":"MultiPoint","abstract":"\u003cp\u003eA \u003ca href=\"https://datatracker.ietf.org/doc/html/rfc7946#section-3.1.3\"\u003eMultiPoint geometry\u003c/a\u003e represents a collection of disconnected but related positions.\u003c/p\u003e"},"Structs/MultiPolygon.html":{"name":"MultiPolygon","abstract":"\u003cp\u003eA \u003ca href=\"https://datatracker.ietf.org/doc/html/rfc7946#section-3.1.7\"\u003eMultiPolygon geometry\u003c/a\u003e is a collection of \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/Polygon.html\"\u003ePolygon\u003c/a\u003e\u003c/code\u003e geometries that are disconnected but related.\u003c/p\u003e"},"Structs/Point.html":{"name":"Point","abstract":"\u003cp\u003eA \u003ca href=\"https://datatracker.ietf.org/doc/html/rfc7946#section-3.1.2\"\u003ePoint geometry\u003c/a\u003e represents a single position.\u003c/p\u003e"},"Structs/Polygon.html":{"name":"Polygon","abstract":"\u003cp\u003eA \u003ca href=\"https://datatracker.ietf.org/doc/html/rfc7946#section-3.1.6\"\u003ePolygon geometry\u003c/a\u003e is conceptually a collection of \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/Ring.html\"\u003eRing\u003c/a\u003e\u003c/code\u003es that form a single connected geometry.\u003c/p\u003e"},"Structs/RadianCoordinate2D.html":{"name":"RadianCoordinate2D","abstract":"\u003cp\u003eA coordinate pair measured in radians, as opposed to \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbTypealiases.html#/s:4Turf20LocationCoordinate2Da\"\u003eLocationCoordinate2D\u003c/a\u003e\u003c/code\u003e, which is measured in degrees of arc.\u003c/p\u003e"},"Structs/Ring.html":{"name":"Ring","abstract":"\u003cp\u003eA \u003ca href=\"https://datatracker.ietf.org/doc/html/rfc7946#section-3.1.6\"\u003elinear ring\u003c/a\u003e is a closed figure bounded by three or more straight line segments.\u003c/p\u003e"},"Protocols/WKTConvertible.html#/s:4Turf14WKTConvertibleP3wktSSvp":{"name":"wkt","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"WKTConvertible"},"Protocols/WKTConvertible.html#/s:4Turf14WKTConvertibleP3wktxSS_tKcfc":{"name":"init(wkt:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"WKTConvertible"},"Protocols/GeometryConvertible.html#/s:4Turf19GeometryConvertibleP8geometryAA0B0Ovp":{"name":"geometry","abstract":"\u003cp\u003eThe instance wrapped in a \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbEnums/Geometry.html\"\u003eGeometry\u003c/a\u003e\u003c/code\u003e instance.\u003c/p\u003e","parent_name":"GeometryConvertible"},"Protocols/ForeignMemberContainer.html#/s:4Turf22ForeignMemberContainerP14foreignMembersSDySSAA9JSONValueOSgGvp":{"name":"foreignMembers","abstract":"\u003cp\u003e\u003ca href=\"https://datatracker.ietf.org/doc/html/rfc7946#section-6.1\"\u003eForeign members\u003c/a\u003e to round-trip to JSON.\u003c/p\u003e","parent_name":"ForeignMemberContainer"},"Protocols/GeoJSONObjectConvertible.html#/s:4Turf24GeoJSONObjectConvertibleP03geoC0AA0bC0Ovp":{"name":"geoJSONObject","abstract":"\u003cp\u003eThe instance wrapped in a \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbEnums/GeoJSONObject.html\"\u003eGeoJSONObject\u003c/a\u003e\u003c/code\u003e instance.\u003c/p\u003e","parent_name":"GeoJSONObjectConvertible"},"Protocols/GeoJSONObjectConvertible.html":{"name":"GeoJSONObjectConvertible","abstract":"\u003cp\u003eA type that can be represented as a \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbEnums/GeoJSONObject.html\"\u003eGeoJSONObject\u003c/a\u003e\u003c/code\u003e instance.\u003c/p\u003e"},"Protocols/ForeignMemberContainer.html":{"name":"ForeignMemberContainer","abstract":"\u003cp\u003eA GeoJSON object that can contain \u003ca href=\"https://datatracker.ietf.org/doc/html/rfc7946#section-6.1\"\u003eforeign members\u003c/a\u003e in arbitrary keys.\u003c/p\u003e"},"Protocols/GeometryConvertible.html":{"name":"GeometryConvertible","abstract":"\u003cp\u003eA type that can be represented as a \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbEnums/Geometry.html\"\u003eGeometry\u003c/a\u003e\u003c/code\u003e instance.\u003c/p\u003e"},"Protocols/WKTConvertible.html":{"name":"WKTConvertible","abstract":"\u003cp\u003eEntity which can be converted to and from \u0026lsquo;Well Known Text\u0026rsquo;.\u003c/p\u003e"},"Functions.html#/s:4Turf12intersectionySo22CLLocationCoordinate2DVSgAD_ADt_AD_ADttF":{"name":"intersection(_:_:)","abstract":"\u003cp\u003eReturns the intersection of two line segments.\u003c/p\u003e"},"Functions.html#/s:4Turf3midySo22CLLocationCoordinate2DVAD_ADtF":{"name":"mid(_:_:)","abstract":"\u003cp\u003eReturns the point midway between two coordinates measured in degrees.\u003c/p\u003e"},"Extensions/JSONObject.html#/s:SD4TurfSSRszAA9JSONValueOSgRs_rlE0A8RawValuea":{"name":"TurfRawValue","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"JSONObject"},"Extensions/JSONObject.html#/s:SD4TurfSSRszAA9JSONValueOSgRs_rlE12turfRawValueSDySSADGSgSDySSypSgG_tcfc":{"name":"init(turfRawValue:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"JSONObject"},"Extensions/JSONObject.html#/s:SD4TurfSSRszAA9JSONValueOSgRs_rlE12turfRawValueSDySSypSgGvp":{"name":"turfRawValue","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"JSONObject"},"Extensions/JSONArray.html#/s:Sa4TurfAA9JSONValueOSgRszlE0A8RawValuea":{"name":"TurfRawValue","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"JSONArray"},"Extensions/JSONArray.html#/s:Sa4TurfAA9JSONValueOSgRszlE12turfRawValueSayADGSgSayypSgG_tcfc":{"name":"init(turfRawValue:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"JSONArray"},"Extensions/JSONArray.html#/s:Sa4TurfAA9JSONValueOSgRszlE12turfRawValueSayypSgGvp":{"name":"turfRawValue","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"JSONArray"},"Extensions/CodingUserInfoKey.html#/s:s17CodingUserInfoKeyV4TurfE22includesForeignMembersABvpZ":{"name":"includesForeignMembers","abstract":"\u003cp\u003eIndicates if coding of foreign members is enabled.\u003c/p\u003e","parent_name":"CodingUserInfoKey"},"Extensions/LocationCoordinate2D.html#/s:So22CLLocationCoordinate2DV4TurfEyAbC06RadianB1DVcfc":{"name":"init(_:)","abstract":"\u003cp\u003eInstantiates a LocationCoordinate2D from a RadianCoordinate2D\u003c/p\u003e","parent_name":"LocationCoordinate2D"},"Extensions/LocationCoordinate2D.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"LocationCoordinate2D"},"Extensions/LocationCoordinate2D.html#/s:So22CLLocationCoordinate2DV4TurfE9direction2toSdAB_tF":{"name":"direction(to:)","abstract":"\u003cp\u003eReturns the direction from the receiver to the given coordinate.\u003c/p\u003e","parent_name":"LocationCoordinate2D"},"Extensions/LocationCoordinate2D.html#/s:So22CLLocationCoordinate2DV4TurfE10coordinate2at6facingABSd_SdtF":{"name":"coordinate(at:facing:)","abstract":"\u003cp\u003eReturns a coordinate a certain Haversine distance away in the given direction.\u003c/p\u003e","parent_name":"LocationCoordinate2D"},"Extensions/LocationCoordinate2D.html#/s:So22CLLocationCoordinate2DV4TurfE10coordinate2at6facingABSd_10Foundation11MeasurementVySo11NSUnitAngleCGtF":{"name":"coordinate(at:facing:)","abstract":"\u003cp\u003eReturns a coordinate a certain Haversine distance away in the given direction.\u003c/p\u003e","parent_name":"LocationCoordinate2D"},"Extensions/LocationCoordinate2D.html#/s:So22CLLocationCoordinate2DV4TurfE8distance2toSdAB_tF":{"name":"distance(to:)","abstract":"\u003cp\u003eReturns the Haversine distance between two coordinates measured in degrees.\u003c/p\u003e","parent_name":"LocationCoordinate2D"},"Extensions/LocationDegrees.html#/s:Sd4TurfE9toRadiansSdyF":{"name":"toRadians()","abstract":"\u003cp\u003eReturns the direction in radians.\u003c/p\u003e","parent_name":"LocationDegrees"},"Extensions/LocationDegrees.html#/s:Sd4TurfE9toDegreesSdyF":{"name":"toDegrees()","abstract":"\u003cp\u003eReturns the direction in degrees.\u003c/p\u003e","parent_name":"LocationDegrees"},"Extensions/LocationDirection.html#/s:Sd4TurfE4wrap3min3maxS2d_SdtF":{"name":"wrap(min:max:)","abstract":"\u003cp\u003eReturns a normalized number given min and max bounds.\u003c/p\u003e","parent_name":"LocationDirection"},"Extensions/LocationDirection.html#/s:Sd4TurfE10difference4fromS2d_tF":{"name":"difference(from:)","abstract":"\u003cp\u003eReturns the smaller difference between the receiver and another direction.\u003c/p\u003e","parent_name":"LocationDirection"},"Extensions.html#/CharacterSet":{"name":"CharacterSet"},"Extensions/LocationDirection.html":{"name":"LocationDirection"},"Extensions/LocationDegrees.html":{"name":"LocationDegrees"},"Extensions/LocationCoordinate2D.html":{"name":"LocationCoordinate2D"},"Extensions/CodingUserInfoKey.html":{"name":"CodingUserInfoKey","abstract":"\u003cp\u003eKey to pass to populate a \u003ccode\u003euserInfo\u003c/code\u003e dictionary, which is passed to the \u003ccode\u003eJSONDecoder\u003c/code\u003e or \u003ccode\u003eJSONEncoder\u003c/code\u003e to enable processing foreign members.\u003c/p\u003e"},"Extensions/JSONArray.html":{"name":"JSONArray"},"Extensions/JSONObject.html":{"name":"JSONObject"},"Enums/JSONValue.html#/s:4Turf9JSONValueO6stringyACSScACmF":{"name":"string(_:)","abstract":"\u003cp\u003eA string.\u003c/p\u003e","parent_name":"JSONValue"},"Enums/JSONValue.html#/s:4Turf9JSONValueO6numberyACSdcACmF":{"name":"number(_:)","abstract":"\u003cp\u003eA floating-point number.\u003c/p\u003e","parent_name":"JSONValue"},"Enums/JSONValue.html#/s:4Turf9JSONValueO7booleanyACSbcACmF":{"name":"boolean(_:)","abstract":"\u003cp\u003eA Boolean value.\u003c/p\u003e","parent_name":"JSONValue"},"Enums/JSONValue.html#/s:4Turf9JSONValueO5arrayyACSayACSgGcACmF":{"name":"array(_:)","abstract":"\u003cp\u003eA heterogeneous array of JSON values and \u003ccode\u003enull\u003c/code\u003e values.\u003c/p\u003e","parent_name":"JSONValue"},"Enums/JSONValue.html#/s:4Turf9JSONValueO6objectyACSDySSACSgGcACmF":{"name":"object(_:)","abstract":"\u003cp\u003eAn object containing JSON values and \u003ccode\u003enull\u003c/code\u003e values keyed by strings.\u003c/p\u003e","parent_name":"JSONValue"},"Enums/JSONValue.html#/s:4Turf9JSONValueOyACSScfc":{"name":"init(_:)","abstract":"\u003cp\u003eInitializes a JSON value representing the given string.\u003c/p\u003e","parent_name":"JSONValue"},"Enums/JSONValue.html#/s:4Turf9JSONValueOyACxcSzRzlufc":{"name":"init(_:)","abstract":"\u003cp\u003eInitializes a JSON value representing the given integer.\u003c/p\u003e","parent_name":"JSONValue"},"Enums/JSONValue.html#/s:4Turf9JSONValueOyACxcSBRzlufc":{"name":"init(_:)","abstract":"\u003cp\u003eInitializes a JSON value representing the given floating-point number.\u003c/p\u003e","parent_name":"JSONValue"},"Enums/JSONValue.html#/s:4Turf9JSONValueOyACSbcfc":{"name":"init(_:)","abstract":"\u003cp\u003eInitializes a JSON value representing the given Boolean value.\u003c/p\u003e","parent_name":"JSONValue"},"Enums/JSONValue.html#/s:4Turf9JSONValueOyACSayACSgGcfc":{"name":"init(_:)","abstract":"\u003cp\u003eInitializes a JSON value representing the given JSON array.\u003c/p\u003e","parent_name":"JSONValue"},"Enums/JSONValue.html#/s:4Turf9JSONValueOyACSDySSACSgGcfc":{"name":"init(_:)","abstract":"\u003cp\u003eInitializes a JSON value representing the given JSON object.\u003c/p\u003e","parent_name":"JSONValue"},"Enums/JSONValue.html#/s:4Turf9JSONValueO6stringSSSgvp":{"name":"string","abstract":"\u003cp\u003eA string value, if the JSON value represents a string.\u003c/p\u003e","parent_name":"JSONValue"},"Enums/JSONValue.html#/s:4Turf9JSONValueO6numberSdSgvp":{"name":"number","abstract":"\u003cp\u003eA floating-point number value, if the JSON value represents a number.\u003c/p\u003e","parent_name":"JSONValue"},"Enums/JSONValue.html#/s:4Turf9JSONValueO7booleanSbSgvp":{"name":"boolean","abstract":"\u003cp\u003eA Boolean value, if the JSON value represents a Boolean.\u003c/p\u003e","parent_name":"JSONValue"},"Enums/JSONValue.html#/s:4Turf9JSONValueO5arraySayACSgGSgvp":{"name":"array","abstract":"\u003cp\u003eAn array of JSON values, if the JSON value represents an array.\u003c/p\u003e","parent_name":"JSONValue"},"Enums/JSONValue.html#/s:4Turf9JSONValueO6objectSDySSACSgGSgvp":{"name":"object","abstract":"\u003cp\u003eAn object containing JSON values keyed by strings, if the JSON value represents an object.\u003c/p\u003e","parent_name":"JSONValue"},"Enums/JSONValue.html#/s:SY8RawValueQa":{"name":"RawValue","parent_name":"JSONValue"},"Enums/JSONValue.html#/s:SY8rawValuexSg03RawB0Qz_tcfc":{"name":"init(rawValue:)","parent_name":"JSONValue"},"Enums/JSONValue.html#/s:SY8rawValue03RawB0Qzvp":{"name":"rawValue","abstract":"\u003cp\u003eThis branch must happen after the \u003ccode\u003eNSNumber\u003c/code\u003e branch","parent_name":"JSONValue"},"Enums/JSONValue.html#/s:s26ExpressibleByStringLiteralP06stringD0x0cD4TypeQz_tcfc":{"name":"init(stringLiteral:)","parent_name":"JSONValue"},"Enums/JSONValue.html#/s:s27ExpressibleByIntegerLiteralP07integerD0x0cD4TypeQz_tcfc":{"name":"init(integerLiteral:)","parent_name":"JSONValue"},"Enums/JSONValue.html#/s:s25ExpressibleByFloatLiteralP05floatD0x0cD4TypeQz_tcfc":{"name":"init(floatLiteral:)","parent_name":"JSONValue"},"Enums/JSONValue.html#/s:s27ExpressibleByBooleanLiteralP07booleanD0x0cD4TypeQz_tcfc":{"name":"init(booleanLiteral:)","parent_name":"JSONValue"},"Enums/JSONValue.html#/s:s25ExpressibleByArrayLiteralP0cD7ElementQa":{"name":"ArrayLiteralElement","parent_name":"JSONValue"},"Enums/JSONValue.html#/s:s25ExpressibleByArrayLiteralP05arrayD0x0cD7ElementQzd_tcfc":{"name":"init(arrayLiteral:)","parent_name":"JSONValue"},"Enums/JSONValue.html#/s:s30ExpressibleByDictionaryLiteralP3KeyQa":{"name":"Key","parent_name":"JSONValue"},"Enums/JSONValue.html#/s:s30ExpressibleByDictionaryLiteralP5ValueQa":{"name":"Value","parent_name":"JSONValue"},"Enums/JSONValue.html#/s:s30ExpressibleByDictionaryLiteralP010dictionaryD0x3KeyQz_5ValueQztd_tcfc":{"name":"init(dictionaryLiteral:)","parent_name":"JSONValue"},"Enums/JSONValue.html#/s:Se4fromxs7Decoder_p_tKcfc":{"name":"init(from:)","parent_name":"JSONValue"},"Enums/JSONValue.html#/s:SE6encode2toys7Encoder_p_tKF":{"name":"encode(to:)","parent_name":"JSONValue"},"Enums/Geometry.html#/s:4Turf8GeometryO5pointyAcA5PointVcACmF":{"name":"point(_:)","abstract":"\u003cp\u003eA single position.\u003c/p\u003e","parent_name":"Geometry"},"Enums/Geometry.html#/s:4Turf8GeometryO10lineStringyAcA04LineD0VcACmF":{"name":"lineString(_:)","abstract":"\u003cp\u003eA collection of two or more positions, each position connected to the next position linearly.\u003c/p\u003e","parent_name":"Geometry"},"Enums/Geometry.html#/s:4Turf8GeometryO7polygonyAcA7PolygonVcACmF":{"name":"polygon(_:)","abstract":"\u003cp\u003eConceptually, a collection of \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/Ring.html\"\u003eRing\u003c/a\u003e\u003c/code\u003es that form a single connected geometry.\u003c/p\u003e","parent_name":"Geometry"},"Enums/Geometry.html#/s:4Turf8GeometryO10multiPointyAcA05MultiD0VcACmF":{"name":"multiPoint(_:)","abstract":"\u003cp\u003eA collection of positions that are disconnected but related.\u003c/p\u003e","parent_name":"Geometry"},"Enums/Geometry.html#/s:4Turf8GeometryO15multiLineStringyAcA05MultidE0VcACmF":{"name":"multiLineString(_:)","abstract":"\u003cp\u003eA collection of \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/LineString.html\"\u003eLineString\u003c/a\u003e\u003c/code\u003e geometries that are disconnected but related.\u003c/p\u003e","parent_name":"Geometry"},"Enums/Geometry.html#/s:4Turf8GeometryO12multiPolygonyAcA05MultiD0VcACmF":{"name":"multiPolygon(_:)","abstract":"\u003cp\u003eA collection of \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/Polygon.html\"\u003ePolygon\u003c/a\u003e\u003c/code\u003e geometries that are disconnected but related.\u003c/p\u003e","parent_name":"Geometry"},"Enums/Geometry.html#/s:4Turf8GeometryO18geometryCollectionyAcA0bD0VcACmF":{"name":"geometryCollection(_:)","abstract":"\u003cp\u003eA heterogeneous collection of geometries that are related.\u003c/p\u003e","parent_name":"Geometry"},"Enums/Geometry.html#/s:4Turf8GeometryOyAcA0B11Convertible_pcfc":{"name":"init(_:)","abstract":"\u003cp\u003eInitializes a geometry representing the given geometry–convertible instance.\u003c/p\u003e","parent_name":"Geometry"},"Enums/Geometry.html#/s:4Turf24GeoJSONObjectConvertibleP03geoC0AA0bC0Ovp":{"name":"geoJSONObject","parent_name":"Geometry"},"Enums/Geometry.html#/s:Se4fromxs7Decoder_p_tKcfc":{"name":"init(from:)","parent_name":"Geometry"},"Enums/Geometry.html#/s:SE6encode2toys7Encoder_p_tKF":{"name":"encode(to:)","parent_name":"Geometry"},"Enums/Geometry.html#/s:4Turf8GeometryO5pointAA5PointVSgvp":{"name":"point","abstract":"\u003cp\u003eA single position.\u003c/p\u003e","parent_name":"Geometry"},"Enums/Geometry.html#/s:4Turf8GeometryO10lineStringAA04LineD0VSgvp":{"name":"lineString","abstract":"\u003cp\u003eA collection of two or more positions, each position connected to the next position linearly.\u003c/p\u003e","parent_name":"Geometry"},"Enums/Geometry.html#/s:4Turf8GeometryO7polygonAA7PolygonVSgvp":{"name":"polygon","abstract":"\u003cp\u003eConceptually, a collection of \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/Ring.html\"\u003eRing\u003c/a\u003e\u003c/code\u003es that form a single connected geometry.\u003c/p\u003e","parent_name":"Geometry"},"Enums/Geometry.html#/s:4Turf8GeometryO10multiPointAA05MultiD0VSgvp":{"name":"multiPoint","abstract":"\u003cp\u003eA collection of positions that are disconnected but related.\u003c/p\u003e","parent_name":"Geometry"},"Enums/Geometry.html#/s:4Turf8GeometryO15multiLineStringAA05MultidE0VSgvp":{"name":"multiLineString","abstract":"\u003cp\u003eA collection of \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/LineString.html\"\u003eLineString\u003c/a\u003e\u003c/code\u003e geometries that are disconnected but related.\u003c/p\u003e","parent_name":"Geometry"},"Enums/Geometry.html#/s:4Turf8GeometryO12multiPolygonAA05MultiD0VSgvp":{"name":"multiPolygon","abstract":"\u003cp\u003eA collection of \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/Polygon.html\"\u003ePolygon\u003c/a\u003e\u003c/code\u003e geometries that are disconnected but related.\u003c/p\u003e","parent_name":"Geometry"},"Enums/Geometry.html#/s:4Turf8GeometryO18geometryCollectionAA0bD0VSgvp":{"name":"geometryCollection","abstract":"\u003cp\u003eA heterogeneous collection of geometries that are related.\u003c/p\u003e","parent_name":"Geometry"},"Enums/Geometry.html#/s:4Turf19GeometryConvertibleP8geometryAA0B0Ovp":{"name":"geometry","parent_name":"Geometry"},"Enums/Geometry.html#/s:4Turf8GeometryO3wktSSvp":{"name":"wkt","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Geometry"},"Enums/Geometry.html#/s:4Turf8GeometryO3wktACSS_tKcfc":{"name":"init(wkt:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Geometry"},"Enums/GeoJSONObject.html#/s:4Turf13GeoJSONObjectO8geometryyAcA8GeometryOcACmF":{"name":"geometry(_:)","abstract":"\u003cp\u003eA \u003ca href=\"https://datatracker.ietf.org/doc/html/rfc7946#section-3.1\"\u003eGeometry object\u003c/a\u003e represents points, curves, and surfaces in coordinate space.\u003c/p\u003e","parent_name":"GeoJSONObject"},"Enums/GeoJSONObject.html#/s:4Turf13GeoJSONObjectO7featureyAcA7FeatureVcACmF":{"name":"feature(_:)","abstract":"\u003cp\u003eA \u003ca href=\"https://datatracker.ietf.org/doc/html/rfc7946#section-3.2\"\u003eFeature object\u003c/a\u003e represents a spatially bounded thing.\u003c/p\u003e","parent_name":"GeoJSONObject"},"Enums/GeoJSONObject.html#/s:4Turf13GeoJSONObjectO17featureCollectionyAcA07FeatureE0VcACmF":{"name":"featureCollection(_:)","abstract":"\u003cp\u003eA \u003ca href=\"https://datatracker.ietf.org/doc/html/rfc7946#section-3.3\"\u003eFeatureCollection object\u003c/a\u003e is a collection of Feature objects.\u003c/p\u003e","parent_name":"GeoJSONObject"},"Enums/GeoJSONObject.html#/s:4Turf13GeoJSONObjectOyAcA0bC11Convertible_pcfc":{"name":"init(_:)","abstract":"\u003cp\u003eInitializes a GeoJSON object representing the given GeoJSON object–convertible instance.\u003c/p\u003e","parent_name":"GeoJSONObject"},"Enums/GeoJSONObject.html#/s:4Turf13GeoJSONObjectO8geometryAA8GeometryOSgvp":{"name":"geometry","abstract":"\u003cp\u003eA geometry object.\u003c/p\u003e","parent_name":"GeoJSONObject"},"Enums/GeoJSONObject.html#/s:4Turf13GeoJSONObjectO7featureAA7FeatureVSgvp":{"name":"feature","abstract":"\u003cp\u003eA feature object.\u003c/p\u003e","parent_name":"GeoJSONObject"},"Enums/GeoJSONObject.html#/s:4Turf13GeoJSONObjectO17featureCollectionAA07FeatureE0VSgvp":{"name":"featureCollection","abstract":"\u003cp\u003eA feature collection object.\u003c/p\u003e","parent_name":"GeoJSONObject"},"Enums/GeoJSONObject.html#/s:Se4fromxs7Decoder_p_tKcfc":{"name":"init(from:)","parent_name":"GeoJSONObject"},"Enums/GeoJSONObject.html#/s:SE6encode2toys7Encoder_p_tKF":{"name":"encode(to:)","parent_name":"GeoJSONObject"},"Enums/GeoJSONObject.html#/s:4Turf24GeoJSONObjectConvertibleP03geoC0AA0bC0Ovp":{"name":"geoJSONObject","parent_name":"GeoJSONObject"},"Enums/FeatureIdentifier.html#/s:4Turf17FeatureIdentifierO6stringyACSScACmF":{"name":"string(_:)","abstract":"\u003cp\u003eA string.\u003c/p\u003e","parent_name":"FeatureIdentifier"},"Enums/FeatureIdentifier.html#/s:4Turf17FeatureIdentifierO6numberyACSdcACmF":{"name":"number(_:)","abstract":"\u003cp\u003eA floating-point number.\u003c/p\u003e","parent_name":"FeatureIdentifier"},"Enums/FeatureIdentifier.html#/s:4Turf17FeatureIdentifierOyACSScfc":{"name":"init(_:)","abstract":"\u003cp\u003eInitializes a feature identifier representing the given string.\u003c/p\u003e","parent_name":"FeatureIdentifier"},"Enums/FeatureIdentifier.html#/s:4Turf17FeatureIdentifierOyACxcSzRzlufc":{"name":"init(_:)","abstract":"\u003cp\u003eInitializes a feature identifier representing the given integer.\u003c/p\u003e","parent_name":"FeatureIdentifier"},"Enums/FeatureIdentifier.html#/s:4Turf17FeatureIdentifierOyACxcSBRzlufc":{"name":"init(_:)","abstract":"\u003cp\u003eInitializes a feature identifier representing the given floating-point number.\u003c/p\u003e","parent_name":"FeatureIdentifier"},"Enums/FeatureIdentifier.html#/s:SY8RawValueQa":{"name":"RawValue","parent_name":"FeatureIdentifier"},"Enums/FeatureIdentifier.html#/s:SY8rawValuexSg03RawB0Qz_tcfc":{"name":"init(rawValue:)","parent_name":"FeatureIdentifier"},"Enums/FeatureIdentifier.html#/s:SY8rawValue03RawB0Qzvp":{"name":"rawValue","parent_name":"FeatureIdentifier"},"Enums/FeatureIdentifier.html#/s:4Turf17FeatureIdentifierO6stringSSSgvp":{"name":"string","abstract":"\u003cp\u003eA string.\u003c/p\u003e","parent_name":"FeatureIdentifier"},"Enums/FeatureIdentifier.html#/s:4Turf17FeatureIdentifierO6numberSdSgvp":{"name":"number","abstract":"\u003cp\u003eA floating-point number.\u003c/p\u003e","parent_name":"FeatureIdentifier"},"Enums/FeatureIdentifier.html#/s:s26ExpressibleByStringLiteralP06stringD0x0cD4TypeQz_tcfc":{"name":"init(stringLiteral:)","parent_name":"FeatureIdentifier"},"Enums/FeatureIdentifier.html#/s:s27ExpressibleByIntegerLiteralP07integerD0x0cD4TypeQz_tcfc":{"name":"init(integerLiteral:)","parent_name":"FeatureIdentifier"},"Enums/FeatureIdentifier.html#/s:s25ExpressibleByFloatLiteralP05floatD0x0cD4TypeQz_tcfc":{"name":"init(floatLiteral:)","parent_name":"FeatureIdentifier"},"Enums/FeatureIdentifier.html#/s:Se4fromxs7Decoder_p_tKcfc":{"name":"init(from:)","parent_name":"FeatureIdentifier"},"Enums/FeatureIdentifier.html#/s:SE6encode2toys7Encoder_p_tKF":{"name":"encode(to:)","parent_name":"FeatureIdentifier"},"Enums/Consumer/Error/Kind.html#/s:4Turf8ConsumerO5ErrorV4KindO8expectedyAGyx__GACyxGcAImSHRzs8SendableRzlF":{"name":"expected(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Kind"},"Enums/Consumer/Error/Kind.html#/s:4Turf8ConsumerO5ErrorV4KindO15unexpectedTokenyAGyx__GAImSHRzs8SendableRzlF":{"name":"unexpectedToken","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Kind"},"Enums/Consumer/Error/Kind.html#/s:4Turf8ConsumerO5ErrorV4KindO6customyAGyx__GsAD_pcAImSHRzs8SendableRzlF":{"name":"custom(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Kind"},"Enums/Consumer/Error/Kind.html":{"name":"Kind","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Error"},"Enums/Consumer/Error.html#/s:4Turf8ConsumerO5ErrorV4kindAE4KindOyx__Gvp":{"name":"kind","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Error"},"Enums/Consumer/Error.html#/s:4Turf8ConsumerO5ErrorV8locationAC8LocationVyx_GSgvp":{"name":"location","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Error"},"Enums/Consumer/Error.html#/s:4Turf8ConsumerO5ErrorV9remainingSs17UnicodeScalarViewVSgvp":{"name":"remaining","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Error"},"Enums/Consumer/Error.html#/s:4Turf8ConsumerO5ErrorV11descriptionSSvp":{"name":"description","abstract":"\u003cp\u003eHuman-readable error description\u003c/p\u003e","parent_name":"Error"},"Enums/Consumer/Charset.html#/s:4Turf8ConsumerO7CharsetV6rangesSaySNys6UInt32VGGvp":{"name":"ranges","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Charset"},"Enums/Consumer/Match.html#/s:4Turf8ConsumerO5MatchO5tokenyAEyx_GSS_AC8LocationVyx_GtcAGmSHRzs8SendableRzlF":{"name":"token(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Match"},"Enums/Consumer/Match.html#/s:4Turf8ConsumerO5MatchO4nodeyAEyx_GxSg_SayAGGtcAGmSHRzs8SendableRzlF":{"name":"node(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Match"},"Enums/Consumer/Match.html#/s:4Turf8ConsumerO5MatchO8locationAC8LocationVyx_GSgvp":{"name":"location","abstract":"\u003cp\u003eThe location of the match in the original source (if known)\u003c/p\u003e","parent_name":"Match"},"Enums/Consumer/Match.html#/s:4Turf8ConsumerO5MatchO9transformys8Sendable_pSgAHx_SaysAG_pGtKXEKF":{"name":"transform(_:)","abstract":"\u003cp\u003eTransform generic AST to application-specific form\u003c/p\u003e","parent_name":"Match"},"Enums/Consumer/Match.html#/s:4Turf8ConsumerO5MatchO11descriptionSSvp":{"name":"description","abstract":"\u003cp\u003eLisp-like description of the AST\u003c/p\u003e","parent_name":"Match"},"Enums/Consumer/Location.html#/s:4Turf8ConsumerO8LocationV5rangeSnySS5IndexVGvp":{"name":"range","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Location"},"Enums/Consumer/Location.html#/s:4Turf8ConsumerO8LocationV6offsetSi4line_Si6columntvp":{"name":"offset","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Location"},"Enums/Consumer/Location.html#/s:4Turf8ConsumerO8LocationV11descriptionSSvp":{"name":"description","abstract":"\u003cp\u003eHuman-readable description of the location\u003c/p\u003e","parent_name":"Location"},"Enums/Consumer/Location.html#/s:4Turf8ConsumerO8LocationV2eeoiySbAEyx_G_AGtFZ":{"name":"==(_:_:)","abstract":"\u003cp\u003eEquatable implementation\u003c/p\u003e","parent_name":"Location"},"Enums/Consumer/Location.html#/s:4Turf8ConsumerO8LocationV2atyAEyx_GSnySiGFZ":{"name":"at(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Location"},"Enums/Consumer.html#/s:4Turf8ConsumerO6stringyACyxGSScAEmSHRzs8SendableRzlF":{"name":"string(_:)","abstract":"\u003cp\u003ePrimitives\u003c/p\u003e","parent_name":"Consumer"},"Enums/Consumer.html#/s:4Turf8ConsumerO7charsetyACyxGAC7CharsetVyx_GcAEmSHRzs8SendableRzlF":{"name":"charset(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Consumer"},"Enums/Consumer.html#/s:4Turf8ConsumerO3anyyACyxGSayAEGcAEmSHRzs8SendableRzlF":{"name":"any(_:)","abstract":"\u003cp\u003eCombinators\u003c/p\u003e","parent_name":"Consumer"},"Enums/Consumer.html#/s:4Turf8ConsumerO8sequenceyACyxGSayAEGcAEmSHRzs8SendableRzlF":{"name":"sequence(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Consumer"},"Enums/Consumer.html#/s:4Turf8ConsumerO8optionalyACyxGAEcAEmSHRzs8SendableRzlF":{"name":"optional(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Consumer"},"Enums/Consumer.html#/s:4Turf8ConsumerO9oneOrMoreyACyxGAEcAEmSHRzs8SendableRzlF":{"name":"oneOrMore(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Consumer"},"Enums/Consumer.html#/s:4Turf8ConsumerO3notyACyxGAEcAEmSHRzs8SendableRzlF":{"name":"not(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Consumer"},"Enums/Consumer.html#/s:4Turf8ConsumerO7flattenyACyxGAEcAEmSHRzs8SendableRzlF":{"name":"flatten(_:)","abstract":"\u003cp\u003eTransforms\u003c/p\u003e","parent_name":"Consumer"},"Enums/Consumer.html#/s:4Turf8ConsumerO7discardyACyxGAEcAEmSHRzs8SendableRzlF":{"name":"discard(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Consumer"},"Enums/Consumer.html#/s:4Turf8ConsumerO7replaceyACyxGAE_SStcAEmSHRzs8SendableRzlF":{"name":"replace(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Consumer"},"Enums/Consumer.html#/s:4Turf8ConsumerO5labelyACyxGx_AEtcAEmSHRzs8SendableRzlF":{"name":"label(_:_:)","abstract":"\u003cp\u003eReferences\u003c/p\u003e","parent_name":"Consumer"},"Enums/Consumer.html#/s:4Turf8ConsumerO9referenceyACyxGxcAEmSHRzs8SendableRzlF":{"name":"reference(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Consumer"},"Enums/Consumer.html#/s:4Turf8ConsumerO5matchyAC5MatchOyx_GSSKF":{"name":"match(_:)","abstract":"\u003cp\u003eParse input and return matched result\u003c/p\u003e","parent_name":"Consumer"},"Enums/Consumer.html#/s:4Turf8ConsumerO10isOptionalSbvp":{"name":"isOptional","abstract":"\u003cp\u003eWill the consumer match empty input?\u003c/p\u003e","parent_name":"Consumer"},"Enums/Consumer/Location.html":{"name":"Location","abstract":"\u003cp\u003eSource location\u003c/p\u003e","parent_name":"Consumer"},"Enums/Consumer/Match.html":{"name":"Match","abstract":"\u003cp\u003eAbstract syntax tree returned by consumer\u003c/p\u003e","parent_name":"Consumer"},"Enums/Consumer/Charset.html":{"name":"Charset","abstract":"\u003cp\u003eOpaque type used for efficient character matching\u003c/p\u003e","parent_name":"Consumer"},"Enums/Consumer.html#/s:4Turf8ConsumerO9Transforma":{"name":"Transform","abstract":"\u003cp\u003eClosure for transforming a Match to an application-specific data type\u003c/p\u003e","parent_name":"Consumer"},"Enums/Consumer/Error.html":{"name":"Error","abstract":"\u003cp\u003eA Parsing error\u003c/p\u003e","parent_name":"Consumer"},"Enums/Consumer.html#/s:4Turf8ConsumerO13stringLiteralACyxGSS_tcfc":{"name":"init(stringLiteral:)","abstract":"\u003cp\u003eCreate .string() consumer from a string literal\u003c/p\u003e","parent_name":"Consumer"},"Enums/Consumer.html#/s:4Turf8ConsumerO12arrayLiteralACyxGAEd_tcfc":{"name":"init(arrayLiteral:)","abstract":"\u003cp\u003eCreate .sequence() consumer from an array literal\u003c/p\u003e","parent_name":"Consumer"},"Enums/Consumer.html#/s:4Turf8ConsumerO1ooiyACyxGAE_AEtFZ":{"name":"|(_:_:)","abstract":"\u003cp\u003eConverts two consumers into an .any() consumer\u003c/p\u003e","parent_name":"Consumer"},"Enums/Consumer.html#/s:4Turf8ConsumerO9characteryACyxGs7UnicodeO6ScalarVFZ":{"name":"character(_:)","abstract":"\u003cp\u003eMatch a character\u003c/p\u003e","parent_name":"Consumer"},"Enums/Consumer.html#/s:4Turf8ConsumerO9character2inACyxGSNys7UnicodeO6ScalarVG_tFZ":{"name":"character(in:)","abstract":"\u003cp\u003eMatch character in range\u003c/p\u003e","parent_name":"Consumer"},"Enums/Consumer.html#/s:4Turf8ConsumerO9character2inACyxGSS_tFZ":{"name":"character(in:)","abstract":"\u003cp\u003eMatch character in string\u003c/p\u003e","parent_name":"Consumer"},"Enums/Consumer.html#/s:4Turf8ConsumerO9character2inACyxG10Foundation12CharacterSetV_tFZ":{"name":"character(in:)","abstract":"\u003cp\u003eMatch character in set\u003c/p\u003e","parent_name":"Consumer"},"Enums/Consumer.html#/s:4Turf8ConsumerO12anyCharacter6exceptACyxGs7UnicodeO6ScalarVd_tFZ":{"name":"anyCharacter(except:)","abstract":"\u003cp\u003eMatch any character except the one(s) specified\u003c/p\u003e","parent_name":"Consumer"},"Enums/Consumer.html#/s:4Turf8ConsumerO12anyCharacter6exceptACyxG10Foundation0D3SetV_tFZ":{"name":"anyCharacter(except:)","abstract":"\u003cp\u003eMatch any character except the specified set\u003c/p\u003e","parent_name":"Consumer"},"Enums/Consumer.html#/s:4Turf8ConsumerO10zeroOrMoreyACyxGAEFZ":{"name":"zeroOrMore(_:)","abstract":"\u003cp\u003eMatches a list of zero or more \u003ccode\u003econsumer\u003c/code\u003e instances\u003c/p\u003e","parent_name":"Consumer"},"Enums/Consumer.html#/s:4Turf8ConsumerO11interleavedyACyxGAE_AEtFZ":{"name":"interleaved(_:_:)","abstract":"\u003cp\u003eMatches one or more \u003ccode\u003econsumer\u003c/code\u003e instances, separated by an instance of \u003ccode\u003eseparator\u003c/code\u003e","parent_name":"Consumer"},"Enums/Consumer.html#/s:4Turf8ConsumerO6ignore_2inACyxGAF_AFtFZ":{"name":"ignore(_:in:)","abstract":"\u003cp\u003eMatches the \u003ccode\u003etarget\u003c/code\u003e consumer, ignoring any instances of the \u003ccode\u003eignored\u003c/code\u003e consumer","parent_name":"Consumer"},"Enums/Consumer.html#/s:4Turf8ConsumerO11descriptionSSvp":{"name":"description","abstract":"\u003cp\u003eHuman-readable description of what consumer matches\u003c/p\u003e","parent_name":"Consumer"},"Enums/Consumer.html":{"name":"Consumer","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Enums/FeatureIdentifier.html":{"name":"FeatureIdentifier","abstract":"\u003cp\u003eA \u003ca href=\"https://datatracker.ietf.org/doc/html/rfc7946#section-3.2\"\u003efeature identifier\u003c/a\u003e identifies a \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/Feature.html\"\u003eFeature\u003c/a\u003e\u003c/code\u003e object.\u003c/p\u003e"},"Enums/GeoJSONObject.html":{"name":"GeoJSONObject","abstract":"\u003cp\u003eA \u003ca href=\"https://datatracker.ietf.org/doc/html/rfc7946#section-3\"\u003eGeoJSON object\u003c/a\u003e represents a Geometry, Feature, or collection of Features.\u003c/p\u003e"},"Enums/Geometry.html":{"name":"Geometry","abstract":"\u003cp\u003eA \u003ca href=\"https://datatracker.ietf.org/doc/html/rfc7946#section-3.1\"\u003eGeometry object\u003c/a\u003e represents points, curves, and surfaces in coordinate space. Use an instance of this enumeration whenever a value could be any kind of Geometry object.\u003c/p\u003e"},"Enums/JSONValue.html":{"name":"JSONValue","abstract":"\u003cp\u003eA JSON value represents an object, array, or fragment.\u003c/p\u003e"},"Enums.html":{"name":"Enumerations","abstract":"\u003cp\u003eThe following enumerations are available globally.\u003c/p\u003e"},"Extensions.html":{"name":"Extensions","abstract":"\u003cp\u003eThe following extensions are available globally.\u003c/p\u003e"},"Functions.html":{"name":"Functions","abstract":"\u003cp\u003eThe following functions are available globally.\u003c/p\u003e"},"Protocols.html":{"name":"Protocols","abstract":"\u003cp\u003eThe following protocols are available globally.\u003c/p\u003e"},"Structs.html":{"name":"Structures","abstract":"\u003cp\u003eThe following structures are available globally.\u003c/p\u003e"},"Typealiases.html":{"name":"Type Aliases","abstract":"\u003cp\u003eThe following type aliases are available globally.\u003c/p\u003e"}} \ No newline at end of file diff --git a/3.0.0/docsets/Turf.docset/Contents/Resources/docSet.dsidx b/3.0.0/docsets/Turf.docset/Contents/Resources/docSet.dsidx new file mode 100644 index 0000000000000000000000000000000000000000..b610a6d88a791f9f8fd929ca7f11439fa1d245d3 GIT binary patch literal 81920 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 U5%>*nq;XNrNwvLZx#qt6-&BZu{r~^~ literal 0 HcmV?d00001 diff --git a/3.0.0/docsets/Turf.tgz b/3.0.0/docsets/Turf.tgz new file mode 100644 index 0000000000000000000000000000000000000000..bbcac7be62bd3fc5c88c0a6d092ebb1437d8aa90 GIT binary patch literal 156610 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⪙;to{EC++& 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
+
+

Turf for Swift (86% documented)

+

GitHubView on GitHub

+

DashInstall in Dash

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+ +

Turf for Swift

+ +

📱iOS     +🖥💻macOS     +📺tvOS     +⌚️watchOS     +Linux     +Documentation     +Carthage compatible     +CocoaPods     +SPM compatible    

+ +

A spatial analysis library written in Swift for native iOS, macOS, tvOS, watchOS, visionOS, and Linux applications, ported from Turf.js.

+

Requirements

+ +

Turf requires Xcode 14.1 or above and supports the following minimum deployment targets:

+ +
    +
  • iOS 11.0 and above
  • +
  • macOS 10.13 (High Sierra) and above
  • +
  • tvOS 11.0 and above
  • +
  • watchOS 4.0 and above
  • +
  • visionOS 1.0 and above (not supported via CocoaPods)
  • +
+ +

Alternatively, you can incorporate Turf into a command line tool without Xcode on any platform that Swift supports, including Linux.

+ +

If your project is written in Objective-C, you’ll need to write a compatibility layer between turf-swift and your Objective-C code. If your project is written in Objective-C++, you may be able to use spatial-algorithms as an alternative to Turf.

+

Installation

+ +

Releases are available for installation using any of the popular Swift dependency managers.

+

CocoaPods

+ +

To install Turf using CocoaPods:

+ +
    +
  1. Specify the following dependency in your Podfile: +rb +pod 'Turf', '~> 3.0' +
  2. +
  3. Run pod repo update if you haven’t lately.
  4. +
  5. Run pod install and open the resulting Xcode workspace.
  6. +
  7. Add import Turf to any Swift file in your application target.
  8. +
+

Carthage

+ +

To install Turf using Carthage:

+ +
    +
  1. Add the following dependency to your Cartfile: + +github "mapbox/turf-swift" ~> 3.0 +
  2. +
  3. Run carthage bootstrap.
  4. +
  5. Follow the rest of Carthage’s integration instructions. Your application target’s Embedded Frameworks should include Turf.framework.
  6. +
  7. Add import Turf to any Swift file in your application target.
  8. +
+

Swift Package Manager

+ +

To install Turf using the Swift Package Manager, add the following package to the dependencies in your Package.swift file:

+
.package(url: "https://github.com/mapbox/turf-swift.git", from: "3.0.0")
+
+ +

Then import Turf in any Swift file in your module.

+

Available functionality

+ +

This work-in-progress port of Turf.js contains the following functionality:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Turf.jsTurf for Swift
turf-along#alongLineString.coordinateFromStart(distance:)
turf-area#areaPolygon.area
turf-bearing#bearingCLLocationCoordinate2D.direction(to:)
LocationCoordinate2D.direction(to:) on Linux
RadianCoordinate2D.direction(to:)
turf-bezier-spline#bezierSplineLineString.bezier(resolution:sharpness:)
turf-boolean-point-in-polygon#booleanPointInPolygonPolygon.contains(_:ignoreBoundary:)
turf-center#centerPolygon.center
turf-center-of-mass#centerOfMassPolygon.centerOfMass
turf-centroid#centroidPolygon.centroid
turf-circle#circlePolygon(center:radius:vertices:)
turf-destination#destinationCLLocationCoordinate2D.coordinate(at:facing:)
LocationCoordinate2D.coordinate(at:facing:) on Linux
RadianCoordinate2D.coordinate(at:facing:)
turf-distance#distanceCLLocationCoordinate2D.distance(to:)
LocationCoordinate2D.distance(to:) on Linux
RadianCoordinate2D.distance(to:)
turf-helpers#polygonPolygon(_:)
turf-helpers#lineStringLineString(_:)
turf-helpers#degreesToRadiansCLLocationDegrees.toRadians()
LocationDegrees.toRadians() on Linux
turf-helpers#radiansToDegreesCLLocationDegrees.toDegrees()
LocationDegrees.toDegrees() on Linux
turf-helpers#convertLength
turf-helpers#convertArea
Measurement.converted(to:)
turf-length#lengthLineString.distance(from:to:)
turf-line-intersect#lineIntersectLineString.intersections(with:)
turf-line-slice#lineSliceLineString.sliced(from:to:)
turf-line-slice-along#lineSliceAlongLineString.trimmed(from:to:)
turf-midpoint#midpointmid(_:_:)
turf-nearest-point-on-line#nearestPointOnLineLineString.closestCoordinate(to:)
turf-polygon-to-line#polygonToLineLineString(_:)
MultiLineString(_:)
turf-simplify#simplifyLineString.simplify(tolerance:highestQuality:)
LineString.simplified(tolerance:highestQuality:)
turf-polygon-smooth#polygonSmoothPolygon.smooth(iterations:)
CLLocationDirection.difference(from:)
LocationDirection.difference(from:) on Linux
CLLocationDirection.wrap(min:max:)
LocationDirection.wrap(min:max:) on Linux
+

GeoJSON

+ +

turf-swift also contains a GeoJSON encoder/decoder with support for Codable.

+
// Decode an unknown GeoJSON object.
+let geojson = try JSONDecoder().decode(GeoJSONObject.self, from: data)
+guard case let .feature(feature) = geojson,
+      case let .point(point) = feature.geometry else {
+    return
+}
+
+// Decode a known GeoJSON object.
+let featureCollection = try JSONDecoder().decode(FeatureCollection.self, from: data)
+
+// Initialize a Point feature and encode it as GeoJSON.
+let coordinate = CLLocationCoordinate2D(latitude: 0, longitude: 1)
+let point = Point(coordinate)
+let pointFeature = Feature(geometry: .point(point))
+let data = try JSONEncoder().encode(pointFeature)
+let json = String(data: data, encoding: .utf8)
+print(json)
+
+/*
+{
+  "type": "Feature",
+  "geometry": {
+    "type": "Point",
+    "coordinates": [
+      1,
+      0
+    ]
+  }
+}
+*/
+
+
+

Well Known Text (WKT)

+ +

turf-swift contains a minimal WKT encoding/decoding support for geometries implementing WKTCodable protocol.

+
let wktString = "POINT(123.53 -12.12)"
+
+// Decoding is done using an init method
+let point = try? Point(wkt: wktString)
+let geometry = try? Geometry(wkt: wktString)
+
+print(point?.coordinates)
+
+// ...
+
+// Geometries then can be serialized using a property getter
+let serializedWKTString = point?.wkt
+print(serializedWKTString)
+
+
+ +
+
+ +
+
+ + diff --git a/3.0.0/js/jazzy.js b/3.0.0/js/jazzy.js new file mode 100755 index 00000000..19844166 --- /dev/null +++ b/3.0.0/js/jazzy.js @@ -0,0 +1,74 @@ +// Jazzy - https://github.com/realm/jazzy +// Copyright Realm Inc. +// SPDX-License-Identifier: MIT + +window.jazzy = {'docset': false} +if (typeof window.dash != 'undefined') { + document.documentElement.className += ' dash' + window.jazzy.docset = true +} +if (navigator.userAgent.match(/xcode/i)) { + document.documentElement.className += ' xcode' + window.jazzy.docset = true +} + +function toggleItem($link, $content) { + var animationDuration = 300; + $link.toggleClass('token-open'); + $content.slideToggle(animationDuration); +} + +function itemLinkToContent($link) { + return $link.parent().parent().next(); +} + +// On doc load + hash-change, open any targetted item +function openCurrentItemIfClosed() { + if (window.jazzy.docset) { + return; + } + var $link = $(`a[name="${location.hash.substring(1)}"]`).nextAll('.token'); + $content = itemLinkToContent($link); + if ($content.is(':hidden')) { + toggleItem($link, $content); + } +} + +$(openCurrentItemIfClosed); +$(window).on('hashchange', openCurrentItemIfClosed); + +// On item link ('token') click, toggle its discussion +$('.token').on('click', function(event) { + if (window.jazzy.docset) { + return; + } + var $link = $(this); + toggleItem($link, itemLinkToContent($link)); + + // Keeps the document from jumping to the hash. + var href = $link.attr('href'); + if (history.pushState) { + history.pushState({}, '', href); + } else { + location.hash = href; + } + event.preventDefault(); +}); + +// Clicks on links to the current, closed, item need to open the item +$("a:not('.token')").on('click', function() { + if (location == this.href) { + openCurrentItemIfClosed(); + } +}); + +// KaTeX rendering +if ("katex" in window) { + $($('.math').each( (_, element) => { + katex.render(element.textContent, element, { + displayMode: $(element).hasClass('m-block'), + throwOnError: false, + trust: true + }); + })) +} diff --git a/3.0.0/js/jazzy.search.js b/3.0.0/js/jazzy.search.js new file mode 100644 index 00000000..359cdbb8 --- /dev/null +++ b/3.0.0/js/jazzy.search.js @@ -0,0 +1,74 @@ +// Jazzy - https://github.com/realm/jazzy +// Copyright Realm Inc. +// SPDX-License-Identifier: MIT + +$(function(){ + var $typeahead = $('[data-typeahead]'); + var $form = $typeahead.parents('form'); + var searchURL = $form.attr('action'); + + function displayTemplate(result) { + return result.name; + } + + function suggestionTemplate(result) { + var t = '
'; + t += '' + result.name + ''; + if (result.parent_name) { + t += '' + result.parent_name + ''; + } + t += '
'; + return t; + } + + $typeahead.one('focus', function() { + $form.addClass('loading'); + + $.getJSON(searchURL).then(function(searchData) { + const searchIndex = lunr(function() { + this.ref('url'); + this.field('name'); + this.field('abstract'); + for (const [url, doc] of Object.entries(searchData)) { + this.add({url: url, name: doc.name, abstract: doc.abstract}); + } + }); + + $typeahead.typeahead( + { + highlight: true, + minLength: 3, + autoselect: true + }, + { + limit: 10, + display: displayTemplate, + templates: { suggestion: suggestionTemplate }, + source: function(query, sync) { + const lcSearch = query.toLowerCase(); + const results = searchIndex.query(function(q) { + q.term(lcSearch, { boost: 100 }); + q.term(lcSearch, { + boost: 10, + wildcard: lunr.Query.wildcard.TRAILING + }); + }).map(function(result) { + var doc = searchData[result.ref]; + doc.url = result.ref; + return doc; + }); + sync(results); + } + } + ); + $form.removeClass('loading'); + $typeahead.trigger('focus'); + }); + }); + + var baseURL = searchURL.slice(0, -"search.json".length); + + $typeahead.on('typeahead:select', function(e, result) { + window.location = baseURL + result.url; + }); +}); diff --git a/3.0.0/js/jquery.min.js b/3.0.0/js/jquery.min.js new file mode 100644 index 00000000..2c69bc90 --- /dev/null +++ b/3.0.0/js/jquery.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.6.1 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,y=n.hasOwnProperty,a=y.toString,l=a.call(Object),v={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.1",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&v(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!y||!y.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ve(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ye(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ve(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],y=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||y.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||y.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||y.push(".#.+[+~]"),e.querySelectorAll("\\\f"),y.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),y=y.length&&new RegExp(y.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),v=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&v(p,e)?-1:t==C||t.ownerDocument==p&&v(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!y||!y.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),v.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",v.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",v.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),v.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(v.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return B(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=_e(v.pixelPosition,function(e,t){if(t)return t=Be(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return B(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 00){var c=e.utils.clone(r)||{};c.position=[a,l],c.index=s.length,s.push(new e.Token(i.slice(a,o),c))}a=o+1}}return s},e.tokenizer.separator=/[\s\-]+/,e.Pipeline=function(){this._stack=[]},e.Pipeline.registeredFunctions=Object.create(null),e.Pipeline.registerFunction=function(t,r){r in this.registeredFunctions&&e.utils.warn("Overwriting existing registered function: "+r),t.label=r,e.Pipeline.registeredFunctions[t.label]=t},e.Pipeline.warnIfFunctionNotRegistered=function(t){var r=t.label&&t.label in this.registeredFunctions;r||e.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",t)},e.Pipeline.load=function(t){var r=new e.Pipeline;return t.forEach(function(t){var i=e.Pipeline.registeredFunctions[t];if(!i)throw new Error("Cannot load unregistered function: "+t);r.add(i)}),r},e.Pipeline.prototype.add=function(){var t=Array.prototype.slice.call(arguments);t.forEach(function(t){e.Pipeline.warnIfFunctionNotRegistered(t),this._stack.push(t)},this)},e.Pipeline.prototype.after=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");i+=1,this._stack.splice(i,0,r)},e.Pipeline.prototype.before=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");this._stack.splice(i,0,r)},e.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);t!=-1&&this._stack.splice(t,1)},e.Pipeline.prototype.run=function(e){for(var t=this._stack.length,r=0;r1&&(se&&(r=n),s!=e);)i=r-t,n=t+Math.floor(i/2),s=this.elements[2*n];return s==e?2*n:s>e?2*n:sa?l+=2:o==a&&(t+=r[u+1]*i[l+1],u+=2,l+=2);return t},e.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},e.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),t=1,r=0;t0){var o,a=s.str.charAt(0);a in s.node.edges?o=s.node.edges[a]:(o=new e.TokenSet,s.node.edges[a]=o),1==s.str.length&&(o["final"]=!0),n.push({node:o,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(0!=s.editsRemaining){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new e.TokenSet;s.node.edges["*"]=u}if(0==s.str.length&&(u["final"]=!0),n.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&n.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),1==s.str.length&&(s.node["final"]=!0),s.str.length>=1){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new e.TokenSet;s.node.edges["*"]=l}1==s.str.length&&(l["final"]=!0),n.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var c,h=s.str.charAt(0),d=s.str.charAt(1);d in s.node.edges?c=s.node.edges[d]:(c=new e.TokenSet,s.node.edges[d]=c),1==s.str.length&&(c["final"]=!0),n.push({node:c,editsRemaining:s.editsRemaining-1,str:h+s.str.slice(2)})}}}return i},e.TokenSet.fromString=function(t){for(var r=new e.TokenSet,i=r,n=0,s=t.length;n=e;t--){var r=this.uncheckedNodes[t],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r["char"]]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}},e.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},e.Index.prototype.search=function(t){return this.query(function(r){var i=new e.QueryParser(t,r);i.parse()})},e.Index.prototype.query=function(t){for(var r=new e.Query(this.fields),i=Object.create(null),n=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),u=0;u1?this._b=1:this._b=e},e.Builder.prototype.k1=function(e){this._k1=e},e.Builder.prototype.add=function(t,r){var i=t[this._ref],n=Object.keys(this._fields);this._documents[i]=r||{},this.documentCount+=1;for(var s=0;s=this.length)return e.QueryLexer.EOS;var t=this.str.charAt(this.pos);return this.pos+=1,t},e.QueryLexer.prototype.width=function(){return this.pos-this.start},e.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},e.QueryLexer.prototype.backup=function(){this.pos-=1},e.QueryLexer.prototype.acceptDigitRun=function(){var t,r;do t=this.next(),r=t.charCodeAt(0);while(r>47&&r<58);t!=e.QueryLexer.EOS&&this.backup()},e.QueryLexer.prototype.more=function(){return this.pos1&&(t.backup(),t.emit(e.QueryLexer.TERM)),t.ignore(),t.more())return e.QueryLexer.lexText},e.QueryLexer.lexEditDistance=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.EDIT_DISTANCE),e.QueryLexer.lexText},e.QueryLexer.lexBoost=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.BOOST),e.QueryLexer.lexText},e.QueryLexer.lexEOS=function(t){t.width()>0&&t.emit(e.QueryLexer.TERM)},e.QueryLexer.termSeparator=e.tokenizer.separator,e.QueryLexer.lexText=function(t){for(;;){var r=t.next();if(r==e.QueryLexer.EOS)return e.QueryLexer.lexEOS;if(92!=r.charCodeAt(0)){if(":"==r)return e.QueryLexer.lexField;if("~"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexEditDistance;if("^"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexBoost;if("+"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if("-"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if(r.match(e.QueryLexer.termSeparator))return e.QueryLexer.lexTerm}else t.escapeCharacter()}},e.QueryParser=function(t,r){this.lexer=new e.QueryLexer(t),this.query=r,this.currentClause={},this.lexemeIdx=0},e.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var t=e.QueryParser.parseClause;t;)t=t(this);return this.query},e.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},e.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},e.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},e.QueryParser.parseClause=function(t){var r=t.peekLexeme();if(void 0!=r)switch(r.type){case e.QueryLexer.PRESENCE:return e.QueryParser.parsePresence;case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expected either a field or a term, found "+r.type;throw r.str.length>=1&&(i+=" with value '"+r.str+"'"),new e.QueryParseError(i,r.start,r.end)}},e.QueryParser.parsePresence=function(t){var r=t.consumeLexeme();if(void 0!=r){switch(r.str){case"-":t.currentClause.presence=e.Query.presence.PROHIBITED;break;case"+":t.currentClause.presence=e.Query.presence.REQUIRED;break;default:var i="unrecognised presence operator'"+r.str+"'";throw new e.QueryParseError(i,r.start,r.end)}var n=t.peekLexeme();if(void 0==n){var i="expecting term or field, found nothing";throw new e.QueryParseError(i,r.start,r.end)}switch(n.type){case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expecting term or field, found '"+n.type+"'";throw new e.QueryParseError(i,n.start,n.end)}}},e.QueryParser.parseField=function(t){var r=t.consumeLexeme();if(void 0!=r){if(t.query.allFields.indexOf(r.str)==-1){var i=t.query.allFields.map(function(e){return"'"+e+"'"}).join(", "),n="unrecognised field '"+r.str+"', possible fields: "+i;throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.fields=[r.str];var s=t.peekLexeme();if(void 0==s){var n="expecting term, found nothing";throw new e.QueryParseError(n,r.start,r.end)}switch(s.type){case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var n="expecting term, found '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseTerm=function(t){var r=t.consumeLexeme();if(void 0!=r){t.currentClause.term=r.str.toLowerCase(),r.str.indexOf("*")!=-1&&(t.currentClause.usePipeline=!1);var i=t.peekLexeme();if(void 0==i)return void t.nextClause();switch(i.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+i.type+"'";throw new e.QueryParseError(n,i.start,i.end)}}},e.QueryParser.parseEditDistance=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="edit distance must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.editDistance=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseBoost=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="boost must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.boost=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},function(e,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():e.lunr=t()}(this,function(){return e})}(); diff --git a/3.0.0/js/typeahead.jquery.js b/3.0.0/js/typeahead.jquery.js new file mode 100644 index 00000000..3a2d2ab0 --- /dev/null +++ b/3.0.0/js/typeahead.jquery.js @@ -0,0 +1,1694 @@ +/*! + * typeahead.js 1.3.1 + * https://github.com/corejavascript/typeahead.js + * Copyright 2013-2020 Twitter, Inc. and other contributors; Licensed MIT + */ + + +(function(root, factory) { + if (typeof define === "function" && define.amd) { + define([ "jquery" ], function(a0) { + return factory(a0); + }); + } else if (typeof module === "object" && module.exports) { + module.exports = factory(require("jquery")); + } else { + factory(root["jQuery"]); + } +})(this, function($) { + var _ = function() { + "use strict"; + return { + isMsie: function() { + return /(msie|trident)/i.test(navigator.userAgent) ? navigator.userAgent.match(/(msie |rv:)(\d+(.\d+)?)/i)[2] : false; + }, + isBlankString: function(str) { + return !str || /^\s*$/.test(str); + }, + escapeRegExChars: function(str) { + return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"); + }, + isString: function(obj) { + return typeof obj === "string"; + }, + isNumber: function(obj) { + return typeof obj === "number"; + }, + isArray: $.isArray, + isFunction: $.isFunction, + isObject: $.isPlainObject, + isUndefined: function(obj) { + return typeof obj === "undefined"; + }, + isElement: function(obj) { + return !!(obj && obj.nodeType === 1); + }, + isJQuery: function(obj) { + return obj instanceof $; + }, + toStr: function toStr(s) { + return _.isUndefined(s) || s === null ? "" : s + ""; + }, + bind: $.proxy, + each: function(collection, cb) { + $.each(collection, reverseArgs); + function reverseArgs(index, value) { + return cb(value, index); + } + }, + map: $.map, + filter: $.grep, + every: function(obj, test) { + var result = true; + if (!obj) { + return result; + } + $.each(obj, function(key, val) { + if (!(result = test.call(null, val, key, obj))) { + return false; + } + }); + return !!result; + }, + some: function(obj, test) { + var result = false; + if (!obj) { + return result; + } + $.each(obj, function(key, val) { + if (result = test.call(null, val, key, obj)) { + return false; + } + }); + return !!result; + }, + mixin: $.extend, + identity: function(x) { + return x; + }, + clone: function(obj) { + return $.extend(true, {}, obj); + }, + getIdGenerator: function() { + var counter = 0; + return function() { + return counter++; + }; + }, + templatify: function templatify(obj) { + return $.isFunction(obj) ? obj : template; + function template() { + return String(obj); + } + }, + defer: function(fn) { + setTimeout(fn, 0); + }, + debounce: function(func, wait, immediate) { + var timeout, result; + return function() { + var context = this, args = arguments, later, callNow; + later = function() { + timeout = null; + if (!immediate) { + result = func.apply(context, args); + } + }; + callNow = immediate && !timeout; + clearTimeout(timeout); + timeout = setTimeout(later, wait); + if (callNow) { + result = func.apply(context, args); + } + return result; + }; + }, + throttle: function(func, wait) { + var context, args, timeout, result, previous, later; + previous = 0; + later = function() { + previous = new Date(); + timeout = null; + result = func.apply(context, args); + }; + return function() { + var now = new Date(), remaining = wait - (now - previous); + context = this; + args = arguments; + if (remaining <= 0) { + clearTimeout(timeout); + timeout = null; + previous = now; + result = func.apply(context, args); + } else if (!timeout) { + timeout = setTimeout(later, remaining); + } + return result; + }; + }, + stringify: function(val) { + return _.isString(val) ? val : JSON.stringify(val); + }, + guid: function() { + function _p8(s) { + var p = (Math.random().toString(16) + "000000000").substr(2, 8); + return s ? "-" + p.substr(0, 4) + "-" + p.substr(4, 4) : p; + } + return "tt-" + _p8() + _p8(true) + _p8(true) + _p8(); + }, + noop: function() {} + }; + }(); + var WWW = function() { + "use strict"; + var defaultClassNames = { + wrapper: "twitter-typeahead", + input: "tt-input", + hint: "tt-hint", + menu: "tt-menu", + dataset: "tt-dataset", + suggestion: "tt-suggestion", + selectable: "tt-selectable", + empty: "tt-empty", + open: "tt-open", + cursor: "tt-cursor", + highlight: "tt-highlight" + }; + return build; + function build(o) { + var www, classes; + classes = _.mixin({}, defaultClassNames, o); + www = { + css: buildCss(), + classes: classes, + html: buildHtml(classes), + selectors: buildSelectors(classes) + }; + return { + css: www.css, + html: www.html, + classes: www.classes, + selectors: www.selectors, + mixin: function(o) { + _.mixin(o, www); + } + }; + } + function buildHtml(c) { + return { + wrapper: '', + menu: '
' + }; + } + function buildSelectors(classes) { + var selectors = {}; + _.each(classes, function(v, k) { + selectors[k] = "." + v; + }); + return selectors; + } + function buildCss() { + var css = { + wrapper: { + position: "relative", + display: "inline-block" + }, + hint: { + position: "absolute", + top: "0", + left: "0", + borderColor: "transparent", + boxShadow: "none", + opacity: "1" + }, + input: { + position: "relative", + verticalAlign: "top", + backgroundColor: "transparent" + }, + inputWithNoHint: { + position: "relative", + verticalAlign: "top" + }, + menu: { + position: "absolute", + top: "100%", + left: "0", + zIndex: "100", + display: "none" + }, + ltr: { + left: "0", + right: "auto" + }, + rtl: { + left: "auto", + right: " 0" + } + }; + if (_.isMsie()) { + _.mixin(css.input, { + backgroundImage: "url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)" + }); + } + return css; + } + }(); + var EventBus = function() { + "use strict"; + var namespace, deprecationMap; + namespace = "typeahead:"; + deprecationMap = { + render: "rendered", + cursorchange: "cursorchanged", + select: "selected", + autocomplete: "autocompleted" + }; + function EventBus(o) { + if (!o || !o.el) { + $.error("EventBus initialized without el"); + } + this.$el = $(o.el); + } + _.mixin(EventBus.prototype, { + _trigger: function(type, args) { + var $e = $.Event(namespace + type); + this.$el.trigger.call(this.$el, $e, args || []); + return $e; + }, + before: function(type) { + var args, $e; + args = [].slice.call(arguments, 1); + $e = this._trigger("before" + type, args); + return $e.isDefaultPrevented(); + }, + trigger: function(type) { + var deprecatedType; + this._trigger(type, [].slice.call(arguments, 1)); + if (deprecatedType = deprecationMap[type]) { + this._trigger(deprecatedType, [].slice.call(arguments, 1)); + } + } + }); + return EventBus; + }(); + var EventEmitter = function() { + "use strict"; + var splitter = /\s+/, nextTick = getNextTick(); + return { + onSync: onSync, + onAsync: onAsync, + off: off, + trigger: trigger + }; + function on(method, types, cb, context) { + var type; + if (!cb) { + return this; + } + types = types.split(splitter); + cb = context ? bindContext(cb, context) : cb; + this._callbacks = this._callbacks || {}; + while (type = types.shift()) { + this._callbacks[type] = this._callbacks[type] || { + sync: [], + async: [] + }; + this._callbacks[type][method].push(cb); + } + return this; + } + function onAsync(types, cb, context) { + return on.call(this, "async", types, cb, context); + } + function onSync(types, cb, context) { + return on.call(this, "sync", types, cb, context); + } + function off(types) { + var type; + if (!this._callbacks) { + return this; + } + types = types.split(splitter); + while (type = types.shift()) { + delete this._callbacks[type]; + } + return this; + } + function trigger(types) { + var type, callbacks, args, syncFlush, asyncFlush; + if (!this._callbacks) { + return this; + } + types = types.split(splitter); + args = [].slice.call(arguments, 1); + while ((type = types.shift()) && (callbacks = this._callbacks[type])) { + syncFlush = getFlush(callbacks.sync, this, [ type ].concat(args)); + asyncFlush = getFlush(callbacks.async, this, [ type ].concat(args)); + syncFlush() && nextTick(asyncFlush); + } + return this; + } + function getFlush(callbacks, context, args) { + return flush; + function flush() { + var cancelled; + for (var i = 0, len = callbacks.length; !cancelled && i < len; i += 1) { + cancelled = callbacks[i].apply(context, args) === false; + } + return !cancelled; + } + } + function getNextTick() { + var nextTickFn; + if (window.setImmediate) { + nextTickFn = function nextTickSetImmediate(fn) { + setImmediate(function() { + fn(); + }); + }; + } else { + nextTickFn = function nextTickSetTimeout(fn) { + setTimeout(function() { + fn(); + }, 0); + }; + } + return nextTickFn; + } + function bindContext(fn, context) { + return fn.bind ? fn.bind(context) : function() { + fn.apply(context, [].slice.call(arguments, 0)); + }; + } + }(); + var highlight = function(doc) { + "use strict"; + var defaults = { + node: null, + pattern: null, + tagName: "strong", + className: null, + wordsOnly: false, + caseSensitive: false, + diacriticInsensitive: false + }; + var accented = { + A: "[AaªÀ-Åà-åĀ-ąǍǎȀ-ȃȦȧᴬᵃḀḁẚẠ-ảₐ℀℁℻⒜Ⓐⓐ㍱-㍴㎀-㎄㎈㎉㎩-㎯㏂㏊㏟㏿Aa]", + B: "[BbᴮᵇḂ-ḇℬ⒝Ⓑⓑ㍴㎅-㎇㏃㏈㏔㏝Bb]", + C: "[CcÇçĆ-čᶜ℀ℂ℃℅℆ℭⅭⅽ⒞Ⓒⓒ㍶㎈㎉㎝㎠㎤㏄-㏇Cc]", + D: "[DdĎďDŽ-džDZ-dzᴰᵈḊ-ḓⅅⅆⅮⅾ⒟Ⓓⓓ㋏㍲㍷-㍹㎗㎭-㎯㏅㏈Dd]", + E: "[EeÈ-Ëè-ëĒ-ěȄ-ȇȨȩᴱᵉḘ-ḛẸ-ẽₑ℡ℯℰⅇ⒠Ⓔⓔ㉐㋍㋎Ee]", + F: "[FfᶠḞḟ℉ℱ℻⒡Ⓕⓕ㎊-㎌㎙ff-fflFf]", + G: "[GgĜ-ģǦǧǴǵᴳᵍḠḡℊ⒢Ⓖⓖ㋌㋍㎇㎍-㎏㎓㎬㏆㏉㏒㏿Gg]", + H: "[HhĤĥȞȟʰᴴḢ-ḫẖℋ-ℎ⒣Ⓗⓗ㋌㍱㎐-㎔㏊㏋㏗Hh]", + I: "[IiÌ-Ïì-ïĨ-İIJijǏǐȈ-ȋᴵᵢḬḭỈ-ịⁱℐℑℹⅈⅠ-ⅣⅥ-ⅨⅪⅫⅰ-ⅳⅵ-ⅸⅺⅻ⒤Ⓘⓘ㍺㏌㏕fiffiIi]", + J: "[JjIJ-ĵLJ-njǰʲᴶⅉ⒥ⒿⓙⱼJj]", + K: "[KkĶķǨǩᴷᵏḰ-ḵK⒦Ⓚⓚ㎄㎅㎉㎏㎑㎘㎞㎢㎦㎪㎸㎾㏀㏆㏍-㏏Kk]", + L: "[LlĹ-ŀLJ-ljˡᴸḶḷḺ-ḽℒℓ℡Ⅼⅼ⒧Ⓛⓛ㋏㎈㎉㏐-㏓㏕㏖㏿flfflLl]", + M: "[MmᴹᵐḾ-ṃ℠™ℳⅯⅿ⒨Ⓜⓜ㍷-㍹㎃㎆㎎㎒㎖㎙-㎨㎫㎳㎷㎹㎽㎿㏁㏂㏎㏐㏔-㏖㏘㏙㏞㏟Mm]", + N: "[NnÑñŃ-ʼnNJ-njǸǹᴺṄ-ṋⁿℕ№⒩Ⓝⓝ㎁㎋㎚㎱㎵㎻㏌㏑Nn]", + O: "[OoºÒ-Öò-öŌ-őƠơǑǒǪǫȌ-ȏȮȯᴼᵒỌ-ỏₒ℅№ℴ⒪Ⓞⓞ㍵㏇㏒㏖Oo]", + P: "[PpᴾᵖṔ-ṗℙ⒫Ⓟⓟ㉐㍱㍶㎀㎊㎩-㎬㎰㎴㎺㏋㏗-㏚Pp]", + Q: "[Qqℚ⒬Ⓠⓠ㏃Qq]", + R: "[RrŔ-řȐ-ȓʳᴿᵣṘ-ṛṞṟ₨ℛ-ℝ⒭Ⓡⓡ㋍㍴㎭-㎯㏚㏛Rr]", + S: "[SsŚ-šſȘșˢṠ-ṣ₨℁℠⒮Ⓢⓢ㎧㎨㎮-㎳㏛㏜stSs]", + T: "[TtŢ-ťȚțᵀᵗṪ-ṱẗ℡™⒯Ⓣⓣ㉐㋏㎔㏏ſtstTt]", + U: "[UuÙ-Üù-üŨ-ųƯưǓǔȔ-ȗᵁᵘᵤṲ-ṷỤ-ủ℆⒰Ⓤⓤ㍳㍺Uu]", + V: "[VvᵛᵥṼ-ṿⅣ-Ⅷⅳ-ⅷ⒱Ⓥⓥⱽ㋎㍵㎴-㎹㏜㏞Vv]", + W: "[WwŴŵʷᵂẀ-ẉẘ⒲Ⓦⓦ㎺-㎿㏝Ww]", + X: "[XxˣẊ-ẍₓ℻Ⅸ-Ⅻⅸ-ⅻ⒳Ⓧⓧ㏓Xx]", + Y: "[YyÝýÿŶ-ŸȲȳʸẎẏẙỲ-ỹ⒴Ⓨⓨ㏉Yy]", + Z: "[ZzŹ-žDZ-dzᶻẐ-ẕℤℨ⒵Ⓩⓩ㎐-㎔Zz]" + }; + return function hightlight(o) { + var regex; + o = _.mixin({}, defaults, o); + if (!o.node || !o.pattern) { + return; + } + o.pattern = _.isArray(o.pattern) ? o.pattern : [ o.pattern ]; + regex = getRegex(o.pattern, o.caseSensitive, o.wordsOnly, o.diacriticInsensitive); + traverse(o.node, hightlightTextNode); + function hightlightTextNode(textNode) { + var match, patternNode, wrapperNode; + if (match = regex.exec(textNode.data)) { + wrapperNode = doc.createElement(o.tagName); + o.className && (wrapperNode.className = o.className); + patternNode = textNode.splitText(match.index); + patternNode.splitText(match[0].length); + wrapperNode.appendChild(patternNode.cloneNode(true)); + textNode.parentNode.replaceChild(wrapperNode, patternNode); + } + return !!match; + } + function traverse(el, hightlightTextNode) { + var childNode, TEXT_NODE_TYPE = 3; + for (var i = 0; i < el.childNodes.length; i++) { + childNode = el.childNodes[i]; + if (childNode.nodeType === TEXT_NODE_TYPE) { + i += hightlightTextNode(childNode) ? 1 : 0; + } else { + traverse(childNode, hightlightTextNode); + } + } + } + }; + function accent_replacer(chr) { + return accented[chr.toUpperCase()] || chr; + } + function getRegex(patterns, caseSensitive, wordsOnly, diacriticInsensitive) { + var escapedPatterns = [], regexStr; + for (var i = 0, len = patterns.length; i < len; i++) { + var escapedWord = _.escapeRegExChars(patterns[i]); + if (diacriticInsensitive) { + escapedWord = escapedWord.replace(/\S/g, accent_replacer); + } + escapedPatterns.push(escapedWord); + } + regexStr = wordsOnly ? "\\b(" + escapedPatterns.join("|") + ")\\b" : "(" + escapedPatterns.join("|") + ")"; + return caseSensitive ? new RegExp(regexStr) : new RegExp(regexStr, "i"); + } + }(window.document); + var Input = function() { + "use strict"; + var specialKeyCodeMap; + specialKeyCodeMap = { + 9: "tab", + 27: "esc", + 37: "left", + 39: "right", + 13: "enter", + 38: "up", + 40: "down" + }; + function Input(o, www) { + var id; + o = o || {}; + if (!o.input) { + $.error("input is missing"); + } + www.mixin(this); + this.$hint = $(o.hint); + this.$input = $(o.input); + this.$menu = $(o.menu); + id = this.$input.attr("id") || _.guid(); + this.$menu.attr("id", id + "_listbox"); + this.$hint.attr({ + "aria-hidden": true + }); + this.$input.attr({ + "aria-owns": id + "_listbox", + role: "combobox", + "aria-autocomplete": "list", + "aria-expanded": false + }); + this.query = this.$input.val(); + this.queryWhenFocused = this.hasFocus() ? this.query : null; + this.$overflowHelper = buildOverflowHelper(this.$input); + this._checkLanguageDirection(); + if (this.$hint.length === 0) { + this.setHint = this.getHint = this.clearHint = this.clearHintIfInvalid = _.noop; + } + this.onSync("cursorchange", this._updateDescendent); + } + Input.normalizeQuery = function(str) { + return _.toStr(str).replace(/^\s*/g, "").replace(/\s{2,}/g, " "); + }; + _.mixin(Input.prototype, EventEmitter, { + _onBlur: function onBlur() { + this.resetInputValue(); + this.trigger("blurred"); + }, + _onFocus: function onFocus() { + this.queryWhenFocused = this.query; + this.trigger("focused"); + }, + _onKeydown: function onKeydown($e) { + var keyName = specialKeyCodeMap[$e.which || $e.keyCode]; + this._managePreventDefault(keyName, $e); + if (keyName && this._shouldTrigger(keyName, $e)) { + this.trigger(keyName + "Keyed", $e); + } + }, + _onInput: function onInput() { + this._setQuery(this.getInputValue()); + this.clearHintIfInvalid(); + this._checkLanguageDirection(); + }, + _managePreventDefault: function managePreventDefault(keyName, $e) { + var preventDefault; + switch (keyName) { + case "up": + case "down": + preventDefault = !withModifier($e); + break; + + default: + preventDefault = false; + } + preventDefault && $e.preventDefault(); + }, + _shouldTrigger: function shouldTrigger(keyName, $e) { + var trigger; + switch (keyName) { + case "tab": + trigger = !withModifier($e); + break; + + default: + trigger = true; + } + return trigger; + }, + _checkLanguageDirection: function checkLanguageDirection() { + var dir = (this.$input.css("direction") || "ltr").toLowerCase(); + if (this.dir !== dir) { + this.dir = dir; + this.$hint.attr("dir", dir); + this.trigger("langDirChanged", dir); + } + }, + _setQuery: function setQuery(val, silent) { + var areEquivalent, hasDifferentWhitespace; + areEquivalent = areQueriesEquivalent(val, this.query); + hasDifferentWhitespace = areEquivalent ? this.query.length !== val.length : false; + this.query = val; + if (!silent && !areEquivalent) { + this.trigger("queryChanged", this.query); + } else if (!silent && hasDifferentWhitespace) { + this.trigger("whitespaceChanged", this.query); + } + }, + _updateDescendent: function updateDescendent(event, id) { + this.$input.attr("aria-activedescendant", id); + }, + bind: function() { + var that = this, onBlur, onFocus, onKeydown, onInput; + onBlur = _.bind(this._onBlur, this); + onFocus = _.bind(this._onFocus, this); + onKeydown = _.bind(this._onKeydown, this); + onInput = _.bind(this._onInput, this); + this.$input.on("blur.tt", onBlur).on("focus.tt", onFocus).on("keydown.tt", onKeydown); + if (!_.isMsie() || _.isMsie() > 9) { + this.$input.on("input.tt", onInput); + } else { + this.$input.on("keydown.tt keypress.tt cut.tt paste.tt", function($e) { + if (specialKeyCodeMap[$e.which || $e.keyCode]) { + return; + } + _.defer(_.bind(that._onInput, that, $e)); + }); + } + return this; + }, + focus: function focus() { + this.$input.focus(); + }, + blur: function blur() { + this.$input.blur(); + }, + getLangDir: function getLangDir() { + return this.dir; + }, + getQuery: function getQuery() { + return this.query || ""; + }, + setQuery: function setQuery(val, silent) { + this.setInputValue(val); + this._setQuery(val, silent); + }, + hasQueryChangedSinceLastFocus: function hasQueryChangedSinceLastFocus() { + return this.query !== this.queryWhenFocused; + }, + getInputValue: function getInputValue() { + return this.$input.val(); + }, + setInputValue: function setInputValue(value) { + this.$input.val(value); + this.clearHintIfInvalid(); + this._checkLanguageDirection(); + }, + resetInputValue: function resetInputValue() { + this.setInputValue(this.query); + }, + getHint: function getHint() { + return this.$hint.val(); + }, + setHint: function setHint(value) { + this.$hint.val(value); + }, + clearHint: function clearHint() { + this.setHint(""); + }, + clearHintIfInvalid: function clearHintIfInvalid() { + var val, hint, valIsPrefixOfHint, isValid; + val = this.getInputValue(); + hint = this.getHint(); + valIsPrefixOfHint = val !== hint && hint.indexOf(val) === 0; + isValid = val !== "" && valIsPrefixOfHint && !this.hasOverflow(); + !isValid && this.clearHint(); + }, + hasFocus: function hasFocus() { + return this.$input.is(":focus"); + }, + hasOverflow: function hasOverflow() { + var constraint = this.$input.width() - 2; + this.$overflowHelper.text(this.getInputValue()); + return this.$overflowHelper.width() >= constraint; + }, + isCursorAtEnd: function() { + var valueLength, selectionStart, range; + valueLength = this.$input.val().length; + selectionStart = this.$input[0].selectionStart; + if (_.isNumber(selectionStart)) { + return selectionStart === valueLength; + } else if (document.selection) { + range = document.selection.createRange(); + range.moveStart("character", -valueLength); + return valueLength === range.text.length; + } + return true; + }, + destroy: function destroy() { + this.$hint.off(".tt"); + this.$input.off(".tt"); + this.$overflowHelper.remove(); + this.$hint = this.$input = this.$overflowHelper = $("
"); + }, + setAriaExpanded: function setAriaExpanded(value) { + this.$input.attr("aria-expanded", value); + } + }); + return Input; + function buildOverflowHelper($input) { + return $('').css({ + position: "absolute", + visibility: "hidden", + whiteSpace: "pre", + fontFamily: $input.css("font-family"), + fontSize: $input.css("font-size"), + fontStyle: $input.css("font-style"), + fontVariant: $input.css("font-variant"), + fontWeight: $input.css("font-weight"), + wordSpacing: $input.css("word-spacing"), + letterSpacing: $input.css("letter-spacing"), + textIndent: $input.css("text-indent"), + textRendering: $input.css("text-rendering"), + textTransform: $input.css("text-transform") + }).insertAfter($input); + } + function areQueriesEquivalent(a, b) { + return Input.normalizeQuery(a) === Input.normalizeQuery(b); + } + function withModifier($e) { + return $e.altKey || $e.ctrlKey || $e.metaKey || $e.shiftKey; + } + }(); + var Dataset = function() { + "use strict"; + var keys, nameGenerator; + keys = { + dataset: "tt-selectable-dataset", + val: "tt-selectable-display", + obj: "tt-selectable-object" + }; + nameGenerator = _.getIdGenerator(); + function Dataset(o, www) { + o = o || {}; + o.templates = o.templates || {}; + o.templates.notFound = o.templates.notFound || o.templates.empty; + if (!o.source) { + $.error("missing source"); + } + if (!o.node) { + $.error("missing node"); + } + if (o.name && !isValidName(o.name)) { + $.error("invalid dataset name: " + o.name); + } + www.mixin(this); + this.highlight = !!o.highlight; + this.name = _.toStr(o.name || nameGenerator()); + this.limit = o.limit || 5; + this.displayFn = getDisplayFn(o.display || o.displayKey); + this.templates = getTemplates(o.templates, this.displayFn); + this.source = o.source.__ttAdapter ? o.source.__ttAdapter() : o.source; + this.async = _.isUndefined(o.async) ? this.source.length > 2 : !!o.async; + this._resetLastSuggestion(); + this.$el = $(o.node).attr("role", "presentation").addClass(this.classes.dataset).addClass(this.classes.dataset + "-" + this.name); + } + Dataset.extractData = function extractData(el) { + var $el = $(el); + if ($el.data(keys.obj)) { + return { + dataset: $el.data(keys.dataset) || "", + val: $el.data(keys.val) || "", + obj: $el.data(keys.obj) || null + }; + } + return null; + }; + _.mixin(Dataset.prototype, EventEmitter, { + _overwrite: function overwrite(query, suggestions) { + suggestions = suggestions || []; + if (suggestions.length) { + this._renderSuggestions(query, suggestions); + } else if (this.async && this.templates.pending) { + this._renderPending(query); + } else if (!this.async && this.templates.notFound) { + this._renderNotFound(query); + } else { + this._empty(); + } + this.trigger("rendered", suggestions, false, this.name); + }, + _append: function append(query, suggestions) { + suggestions = suggestions || []; + if (suggestions.length && this.$lastSuggestion.length) { + this._appendSuggestions(query, suggestions); + } else if (suggestions.length) { + this._renderSuggestions(query, suggestions); + } else if (!this.$lastSuggestion.length && this.templates.notFound) { + this._renderNotFound(query); + } + this.trigger("rendered", suggestions, true, this.name); + }, + _renderSuggestions: function renderSuggestions(query, suggestions) { + var $fragment; + $fragment = this._getSuggestionsFragment(query, suggestions); + this.$lastSuggestion = $fragment.children().last(); + this.$el.html($fragment).prepend(this._getHeader(query, suggestions)).append(this._getFooter(query, suggestions)); + }, + _appendSuggestions: function appendSuggestions(query, suggestions) { + var $fragment, $lastSuggestion; + $fragment = this._getSuggestionsFragment(query, suggestions); + $lastSuggestion = $fragment.children().last(); + this.$lastSuggestion.after($fragment); + this.$lastSuggestion = $lastSuggestion; + }, + _renderPending: function renderPending(query) { + var template = this.templates.pending; + this._resetLastSuggestion(); + template && this.$el.html(template({ + query: query, + dataset: this.name + })); + }, + _renderNotFound: function renderNotFound(query) { + var template = this.templates.notFound; + this._resetLastSuggestion(); + template && this.$el.html(template({ + query: query, + dataset: this.name + })); + }, + _empty: function empty() { + this.$el.empty(); + this._resetLastSuggestion(); + }, + _getSuggestionsFragment: function getSuggestionsFragment(query, suggestions) { + var that = this, fragment; + fragment = document.createDocumentFragment(); + _.each(suggestions, function getSuggestionNode(suggestion) { + var $el, context; + context = that._injectQuery(query, suggestion); + $el = $(that.templates.suggestion(context)).data(keys.dataset, that.name).data(keys.obj, suggestion).data(keys.val, that.displayFn(suggestion)).addClass(that.classes.suggestion + " " + that.classes.selectable); + fragment.appendChild($el[0]); + }); + this.highlight && highlight({ + className: this.classes.highlight, + node: fragment, + pattern: query + }); + return $(fragment); + }, + _getFooter: function getFooter(query, suggestions) { + return this.templates.footer ? this.templates.footer({ + query: query, + suggestions: suggestions, + dataset: this.name + }) : null; + }, + _getHeader: function getHeader(query, suggestions) { + return this.templates.header ? this.templates.header({ + query: query, + suggestions: suggestions, + dataset: this.name + }) : null; + }, + _resetLastSuggestion: function resetLastSuggestion() { + this.$lastSuggestion = $(); + }, + _injectQuery: function injectQuery(query, obj) { + return _.isObject(obj) ? _.mixin({ + _query: query + }, obj) : obj; + }, + update: function update(query) { + var that = this, canceled = false, syncCalled = false, rendered = 0; + this.cancel(); + this.cancel = function cancel() { + canceled = true; + that.cancel = $.noop; + that.async && that.trigger("asyncCanceled", query, that.name); + }; + this.source(query, sync, async); + !syncCalled && sync([]); + function sync(suggestions) { + if (syncCalled) { + return; + } + syncCalled = true; + suggestions = (suggestions || []).slice(0, that.limit); + rendered = suggestions.length; + that._overwrite(query, suggestions); + if (rendered < that.limit && that.async) { + that.trigger("asyncRequested", query, that.name); + } + } + function async(suggestions) { + suggestions = suggestions || []; + if (!canceled && rendered < that.limit) { + that.cancel = $.noop; + var idx = Math.abs(rendered - that.limit); + rendered += idx; + that._append(query, suggestions.slice(0, idx)); + that.async && that.trigger("asyncReceived", query, that.name); + } + } + }, + cancel: $.noop, + clear: function clear() { + this._empty(); + this.cancel(); + this.trigger("cleared"); + }, + isEmpty: function isEmpty() { + return this.$el.is(":empty"); + }, + destroy: function destroy() { + this.$el = $("
"); + } + }); + return Dataset; + function getDisplayFn(display) { + display = display || _.stringify; + return _.isFunction(display) ? display : displayFn; + function displayFn(obj) { + return obj[display]; + } + } + function getTemplates(templates, displayFn) { + return { + notFound: templates.notFound && _.templatify(templates.notFound), + pending: templates.pending && _.templatify(templates.pending), + header: templates.header && _.templatify(templates.header), + footer: templates.footer && _.templatify(templates.footer), + suggestion: templates.suggestion ? userSuggestionTemplate : suggestionTemplate + }; + function userSuggestionTemplate(context) { + var template = templates.suggestion; + return $(template(context)).attr("id", _.guid()); + } + function suggestionTemplate(context) { + return $('
').attr("id", _.guid()).text(displayFn(context)); + } + } + function isValidName(str) { + return /^[_a-zA-Z0-9-]+$/.test(str); + } + }(); + var Menu = function() { + "use strict"; + function Menu(o, www) { + var that = this; + o = o || {}; + if (!o.node) { + $.error("node is required"); + } + www.mixin(this); + this.$node = $(o.node); + this.query = null; + this.datasets = _.map(o.datasets, initializeDataset); + function initializeDataset(oDataset) { + var node = that.$node.find(oDataset.node).first(); + oDataset.node = node.length ? node : $("
").appendTo(that.$node); + return new Dataset(oDataset, www); + } + } + _.mixin(Menu.prototype, EventEmitter, { + _onSelectableClick: function onSelectableClick($e) { + this.trigger("selectableClicked", $($e.currentTarget)); + }, + _onRendered: function onRendered(type, dataset, suggestions, async) { + this.$node.toggleClass(this.classes.empty, this._allDatasetsEmpty()); + this.trigger("datasetRendered", dataset, suggestions, async); + }, + _onCleared: function onCleared() { + this.$node.toggleClass(this.classes.empty, this._allDatasetsEmpty()); + this.trigger("datasetCleared"); + }, + _propagate: function propagate() { + this.trigger.apply(this, arguments); + }, + _allDatasetsEmpty: function allDatasetsEmpty() { + return _.every(this.datasets, _.bind(function isDatasetEmpty(dataset) { + var isEmpty = dataset.isEmpty(); + this.$node.attr("aria-expanded", !isEmpty); + return isEmpty; + }, this)); + }, + _getSelectables: function getSelectables() { + return this.$node.find(this.selectors.selectable); + }, + _removeCursor: function _removeCursor() { + var $selectable = this.getActiveSelectable(); + $selectable && $selectable.removeClass(this.classes.cursor); + }, + _ensureVisible: function ensureVisible($el) { + var elTop, elBottom, nodeScrollTop, nodeHeight; + elTop = $el.position().top; + elBottom = elTop + $el.outerHeight(true); + nodeScrollTop = this.$node.scrollTop(); + nodeHeight = this.$node.height() + parseInt(this.$node.css("paddingTop"), 10) + parseInt(this.$node.css("paddingBottom"), 10); + if (elTop < 0) { + this.$node.scrollTop(nodeScrollTop + elTop); + } else if (nodeHeight < elBottom) { + this.$node.scrollTop(nodeScrollTop + (elBottom - nodeHeight)); + } + }, + bind: function() { + var that = this, onSelectableClick; + onSelectableClick = _.bind(this._onSelectableClick, this); + this.$node.on("click.tt", this.selectors.selectable, onSelectableClick); + this.$node.on("mouseover", this.selectors.selectable, function() { + that.setCursor($(this)); + }); + this.$node.on("mouseleave", function() { + that._removeCursor(); + }); + _.each(this.datasets, function(dataset) { + dataset.onSync("asyncRequested", that._propagate, that).onSync("asyncCanceled", that._propagate, that).onSync("asyncReceived", that._propagate, that).onSync("rendered", that._onRendered, that).onSync("cleared", that._onCleared, that); + }); + return this; + }, + isOpen: function isOpen() { + return this.$node.hasClass(this.classes.open); + }, + open: function open() { + this.$node.scrollTop(0); + this.$node.addClass(this.classes.open); + }, + close: function close() { + this.$node.attr("aria-expanded", false); + this.$node.removeClass(this.classes.open); + this._removeCursor(); + }, + setLanguageDirection: function setLanguageDirection(dir) { + this.$node.attr("dir", dir); + }, + selectableRelativeToCursor: function selectableRelativeToCursor(delta) { + var $selectables, $oldCursor, oldIndex, newIndex; + $oldCursor = this.getActiveSelectable(); + $selectables = this._getSelectables(); + oldIndex = $oldCursor ? $selectables.index($oldCursor) : -1; + newIndex = oldIndex + delta; + newIndex = (newIndex + 1) % ($selectables.length + 1) - 1; + newIndex = newIndex < -1 ? $selectables.length - 1 : newIndex; + return newIndex === -1 ? null : $selectables.eq(newIndex); + }, + setCursor: function setCursor($selectable) { + this._removeCursor(); + if ($selectable = $selectable && $selectable.first()) { + $selectable.addClass(this.classes.cursor); + this._ensureVisible($selectable); + } + }, + getSelectableData: function getSelectableData($el) { + return $el && $el.length ? Dataset.extractData($el) : null; + }, + getActiveSelectable: function getActiveSelectable() { + var $selectable = this._getSelectables().filter(this.selectors.cursor).first(); + return $selectable.length ? $selectable : null; + }, + getTopSelectable: function getTopSelectable() { + var $selectable = this._getSelectables().first(); + return $selectable.length ? $selectable : null; + }, + update: function update(query) { + var isValidUpdate = query !== this.query; + if (isValidUpdate) { + this.query = query; + _.each(this.datasets, updateDataset); + } + return isValidUpdate; + function updateDataset(dataset) { + dataset.update(query); + } + }, + empty: function empty() { + _.each(this.datasets, clearDataset); + this.query = null; + this.$node.addClass(this.classes.empty); + function clearDataset(dataset) { + dataset.clear(); + } + }, + destroy: function destroy() { + this.$node.off(".tt"); + this.$node = $("
"); + _.each(this.datasets, destroyDataset); + function destroyDataset(dataset) { + dataset.destroy(); + } + } + }); + return Menu; + }(); + var Status = function() { + "use strict"; + function Status(options) { + this.$el = $("", { + role: "status", + "aria-live": "polite" + }).css({ + position: "absolute", + padding: "0", + border: "0", + height: "1px", + width: "1px", + "margin-bottom": "-1px", + "margin-right": "-1px", + overflow: "hidden", + clip: "rect(0 0 0 0)", + "white-space": "nowrap" + }); + options.$input.after(this.$el); + _.each(options.menu.datasets, _.bind(function(dataset) { + if (dataset.onSync) { + dataset.onSync("rendered", _.bind(this.update, this)); + dataset.onSync("cleared", _.bind(this.cleared, this)); + } + }, this)); + } + _.mixin(Status.prototype, { + update: function update(event, suggestions) { + var length = suggestions.length; + var words; + if (length === 1) { + words = { + result: "result", + is: "is" + }; + } else { + words = { + result: "results", + is: "are" + }; + } + this.$el.text(length + " " + words.result + " " + words.is + " available, use up and down arrow keys to navigate."); + }, + cleared: function() { + this.$el.text(""); + } + }); + return Status; + }(); + var DefaultMenu = function() { + "use strict"; + var s = Menu.prototype; + function DefaultMenu() { + Menu.apply(this, [].slice.call(arguments, 0)); + } + _.mixin(DefaultMenu.prototype, Menu.prototype, { + open: function open() { + !this._allDatasetsEmpty() && this._show(); + return s.open.apply(this, [].slice.call(arguments, 0)); + }, + close: function close() { + this._hide(); + return s.close.apply(this, [].slice.call(arguments, 0)); + }, + _onRendered: function onRendered() { + if (this._allDatasetsEmpty()) { + this._hide(); + } else { + this.isOpen() && this._show(); + } + return s._onRendered.apply(this, [].slice.call(arguments, 0)); + }, + _onCleared: function onCleared() { + if (this._allDatasetsEmpty()) { + this._hide(); + } else { + this.isOpen() && this._show(); + } + return s._onCleared.apply(this, [].slice.call(arguments, 0)); + }, + setLanguageDirection: function setLanguageDirection(dir) { + this.$node.css(dir === "ltr" ? this.css.ltr : this.css.rtl); + return s.setLanguageDirection.apply(this, [].slice.call(arguments, 0)); + }, + _hide: function hide() { + this.$node.hide(); + }, + _show: function show() { + this.$node.css("display", "block"); + } + }); + return DefaultMenu; + }(); + var Typeahead = function() { + "use strict"; + function Typeahead(o, www) { + var onFocused, onBlurred, onEnterKeyed, onTabKeyed, onEscKeyed, onUpKeyed, onDownKeyed, onLeftKeyed, onRightKeyed, onQueryChanged, onWhitespaceChanged; + o = o || {}; + if (!o.input) { + $.error("missing input"); + } + if (!o.menu) { + $.error("missing menu"); + } + if (!o.eventBus) { + $.error("missing event bus"); + } + www.mixin(this); + this.eventBus = o.eventBus; + this.minLength = _.isNumber(o.minLength) ? o.minLength : 1; + this.input = o.input; + this.menu = o.menu; + this.enabled = true; + this.autoselect = !!o.autoselect; + this.active = false; + this.input.hasFocus() && this.activate(); + this.dir = this.input.getLangDir(); + this._hacks(); + this.menu.bind().onSync("selectableClicked", this._onSelectableClicked, this).onSync("asyncRequested", this._onAsyncRequested, this).onSync("asyncCanceled", this._onAsyncCanceled, this).onSync("asyncReceived", this._onAsyncReceived, this).onSync("datasetRendered", this._onDatasetRendered, this).onSync("datasetCleared", this._onDatasetCleared, this); + onFocused = c(this, "activate", "open", "_onFocused"); + onBlurred = c(this, "deactivate", "_onBlurred"); + onEnterKeyed = c(this, "isActive", "isOpen", "_onEnterKeyed"); + onTabKeyed = c(this, "isActive", "isOpen", "_onTabKeyed"); + onEscKeyed = c(this, "isActive", "_onEscKeyed"); + onUpKeyed = c(this, "isActive", "open", "_onUpKeyed"); + onDownKeyed = c(this, "isActive", "open", "_onDownKeyed"); + onLeftKeyed = c(this, "isActive", "isOpen", "_onLeftKeyed"); + onRightKeyed = c(this, "isActive", "isOpen", "_onRightKeyed"); + onQueryChanged = c(this, "_openIfActive", "_onQueryChanged"); + onWhitespaceChanged = c(this, "_openIfActive", "_onWhitespaceChanged"); + this.input.bind().onSync("focused", onFocused, this).onSync("blurred", onBlurred, this).onSync("enterKeyed", onEnterKeyed, this).onSync("tabKeyed", onTabKeyed, this).onSync("escKeyed", onEscKeyed, this).onSync("upKeyed", onUpKeyed, this).onSync("downKeyed", onDownKeyed, this).onSync("leftKeyed", onLeftKeyed, this).onSync("rightKeyed", onRightKeyed, this).onSync("queryChanged", onQueryChanged, this).onSync("whitespaceChanged", onWhitespaceChanged, this).onSync("langDirChanged", this._onLangDirChanged, this); + } + _.mixin(Typeahead.prototype, { + _hacks: function hacks() { + var $input, $menu; + $input = this.input.$input || $("
"); + $menu = this.menu.$node || $("
"); + $input.on("blur.tt", function($e) { + var active, isActive, hasActive; + active = document.activeElement; + isActive = $menu.is(active); + hasActive = $menu.has(active).length > 0; + if (_.isMsie() && (isActive || hasActive)) { + $e.preventDefault(); + $e.stopImmediatePropagation(); + _.defer(function() { + $input.focus(); + }); + } + }); + $menu.on("mousedown.tt", function($e) { + $e.preventDefault(); + }); + }, + _onSelectableClicked: function onSelectableClicked(type, $el) { + this.select($el); + }, + _onDatasetCleared: function onDatasetCleared() { + this._updateHint(); + }, + _onDatasetRendered: function onDatasetRendered(type, suggestions, async, dataset) { + this._updateHint(); + if (this.autoselect) { + var cursorClass = this.selectors.cursor.substr(1); + this.menu.$node.find(this.selectors.suggestion).first().addClass(cursorClass); + } + this.eventBus.trigger("render", suggestions, async, dataset); + }, + _onAsyncRequested: function onAsyncRequested(type, dataset, query) { + this.eventBus.trigger("asyncrequest", query, dataset); + }, + _onAsyncCanceled: function onAsyncCanceled(type, dataset, query) { + this.eventBus.trigger("asynccancel", query, dataset); + }, + _onAsyncReceived: function onAsyncReceived(type, dataset, query) { + this.eventBus.trigger("asyncreceive", query, dataset); + }, + _onFocused: function onFocused() { + this._minLengthMet() && this.menu.update(this.input.getQuery()); + }, + _onBlurred: function onBlurred() { + if (this.input.hasQueryChangedSinceLastFocus()) { + this.eventBus.trigger("change", this.input.getQuery()); + } + }, + _onEnterKeyed: function onEnterKeyed(type, $e) { + var $selectable; + if ($selectable = this.menu.getActiveSelectable()) { + if (this.select($selectable)) { + $e.preventDefault(); + $e.stopPropagation(); + } + } else if (this.autoselect) { + if (this.select(this.menu.getTopSelectable())) { + $e.preventDefault(); + $e.stopPropagation(); + } + } + }, + _onTabKeyed: function onTabKeyed(type, $e) { + var $selectable; + if ($selectable = this.menu.getActiveSelectable()) { + this.select($selectable) && $e.preventDefault(); + } else if (this.autoselect) { + if ($selectable = this.menu.getTopSelectable()) { + this.autocomplete($selectable) && $e.preventDefault(); + } + } + }, + _onEscKeyed: function onEscKeyed() { + this.close(); + }, + _onUpKeyed: function onUpKeyed() { + this.moveCursor(-1); + }, + _onDownKeyed: function onDownKeyed() { + this.moveCursor(+1); + }, + _onLeftKeyed: function onLeftKeyed() { + if (this.dir === "rtl" && this.input.isCursorAtEnd()) { + this.autocomplete(this.menu.getActiveSelectable() || this.menu.getTopSelectable()); + } + }, + _onRightKeyed: function onRightKeyed() { + if (this.dir === "ltr" && this.input.isCursorAtEnd()) { + this.autocomplete(this.menu.getActiveSelectable() || this.menu.getTopSelectable()); + } + }, + _onQueryChanged: function onQueryChanged(e, query) { + this._minLengthMet(query) ? this.menu.update(query) : this.menu.empty(); + }, + _onWhitespaceChanged: function onWhitespaceChanged() { + this._updateHint(); + }, + _onLangDirChanged: function onLangDirChanged(e, dir) { + if (this.dir !== dir) { + this.dir = dir; + this.menu.setLanguageDirection(dir); + } + }, + _openIfActive: function openIfActive() { + this.isActive() && this.open(); + }, + _minLengthMet: function minLengthMet(query) { + query = _.isString(query) ? query : this.input.getQuery() || ""; + return query.length >= this.minLength; + }, + _updateHint: function updateHint() { + var $selectable, data, val, query, escapedQuery, frontMatchRegEx, match; + $selectable = this.menu.getTopSelectable(); + data = this.menu.getSelectableData($selectable); + val = this.input.getInputValue(); + if (data && !_.isBlankString(val) && !this.input.hasOverflow()) { + query = Input.normalizeQuery(val); + escapedQuery = _.escapeRegExChars(query); + frontMatchRegEx = new RegExp("^(?:" + escapedQuery + ")(.+$)", "i"); + match = frontMatchRegEx.exec(data.val); + match && this.input.setHint(val + match[1]); + } else { + this.input.clearHint(); + } + }, + isEnabled: function isEnabled() { + return this.enabled; + }, + enable: function enable() { + this.enabled = true; + }, + disable: function disable() { + this.enabled = false; + }, + isActive: function isActive() { + return this.active; + }, + activate: function activate() { + if (this.isActive()) { + return true; + } else if (!this.isEnabled() || this.eventBus.before("active")) { + return false; + } else { + this.active = true; + this.eventBus.trigger("active"); + return true; + } + }, + deactivate: function deactivate() { + if (!this.isActive()) { + return true; + } else if (this.eventBus.before("idle")) { + return false; + } else { + this.active = false; + this.close(); + this.eventBus.trigger("idle"); + return true; + } + }, + isOpen: function isOpen() { + return this.menu.isOpen(); + }, + open: function open() { + if (!this.isOpen() && !this.eventBus.before("open")) { + this.input.setAriaExpanded(true); + this.menu.open(); + this._updateHint(); + this.eventBus.trigger("open"); + } + return this.isOpen(); + }, + close: function close() { + if (this.isOpen() && !this.eventBus.before("close")) { + this.input.setAriaExpanded(false); + this.menu.close(); + this.input.clearHint(); + this.input.resetInputValue(); + this.eventBus.trigger("close"); + } + return !this.isOpen(); + }, + setVal: function setVal(val) { + this.input.setQuery(_.toStr(val)); + }, + getVal: function getVal() { + return this.input.getQuery(); + }, + select: function select($selectable) { + var data = this.menu.getSelectableData($selectable); + if (data && !this.eventBus.before("select", data.obj, data.dataset)) { + this.input.setQuery(data.val, true); + this.eventBus.trigger("select", data.obj, data.dataset); + this.close(); + return true; + } + return false; + }, + autocomplete: function autocomplete($selectable) { + var query, data, isValid; + query = this.input.getQuery(); + data = this.menu.getSelectableData($selectable); + isValid = data && query !== data.val; + if (isValid && !this.eventBus.before("autocomplete", data.obj, data.dataset)) { + this.input.setQuery(data.val); + this.eventBus.trigger("autocomplete", data.obj, data.dataset); + return true; + } + return false; + }, + moveCursor: function moveCursor(delta) { + var query, $candidate, data, suggestion, datasetName, cancelMove, id; + query = this.input.getQuery(); + $candidate = this.menu.selectableRelativeToCursor(delta); + data = this.menu.getSelectableData($candidate); + suggestion = data ? data.obj : null; + datasetName = data ? data.dataset : null; + id = $candidate ? $candidate.attr("id") : null; + this.input.trigger("cursorchange", id); + cancelMove = this._minLengthMet() && this.menu.update(query); + if (!cancelMove && !this.eventBus.before("cursorchange", suggestion, datasetName)) { + this.menu.setCursor($candidate); + if (data) { + if (typeof data.val === "string") { + this.input.setInputValue(data.val); + } + } else { + this.input.resetInputValue(); + this._updateHint(); + } + this.eventBus.trigger("cursorchange", suggestion, datasetName); + return true; + } + return false; + }, + destroy: function destroy() { + this.input.destroy(); + this.menu.destroy(); + } + }); + return Typeahead; + function c(ctx) { + var methods = [].slice.call(arguments, 1); + return function() { + var args = [].slice.call(arguments); + _.each(methods, function(method) { + return ctx[method].apply(ctx, args); + }); + }; + } + }(); + (function() { + "use strict"; + var old, keys, methods; + old = $.fn.typeahead; + keys = { + www: "tt-www", + attrs: "tt-attrs", + typeahead: "tt-typeahead" + }; + methods = { + initialize: function initialize(o, datasets) { + var www; + datasets = _.isArray(datasets) ? datasets : [].slice.call(arguments, 1); + o = o || {}; + www = WWW(o.classNames); + return this.each(attach); + function attach() { + var $input, $wrapper, $hint, $menu, defaultHint, defaultMenu, eventBus, input, menu, status, typeahead, MenuConstructor; + _.each(datasets, function(d) { + d.highlight = !!o.highlight; + }); + $input = $(this); + $wrapper = $(www.html.wrapper); + $hint = $elOrNull(o.hint); + $menu = $elOrNull(o.menu); + defaultHint = o.hint !== false && !$hint; + defaultMenu = o.menu !== false && !$menu; + defaultHint && ($hint = buildHintFromInput($input, www)); + defaultMenu && ($menu = $(www.html.menu).css(www.css.menu)); + $hint && $hint.val(""); + $input = prepInput($input, www); + if (defaultHint || defaultMenu) { + $wrapper.css(www.css.wrapper); + $input.css(defaultHint ? www.css.input : www.css.inputWithNoHint); + $input.wrap($wrapper).parent().prepend(defaultHint ? $hint : null).append(defaultMenu ? $menu : null); + } + MenuConstructor = defaultMenu ? DefaultMenu : Menu; + eventBus = new EventBus({ + el: $input + }); + input = new Input({ + hint: $hint, + input: $input, + menu: $menu + }, www); + menu = new MenuConstructor({ + node: $menu, + datasets: datasets + }, www); + status = new Status({ + $input: $input, + menu: menu + }); + typeahead = new Typeahead({ + input: input, + menu: menu, + eventBus: eventBus, + minLength: o.minLength, + autoselect: o.autoselect + }, www); + $input.data(keys.www, www); + $input.data(keys.typeahead, typeahead); + } + }, + isEnabled: function isEnabled() { + var enabled; + ttEach(this.first(), function(t) { + enabled = t.isEnabled(); + }); + return enabled; + }, + enable: function enable() { + ttEach(this, function(t) { + t.enable(); + }); + return this; + }, + disable: function disable() { + ttEach(this, function(t) { + t.disable(); + }); + return this; + }, + isActive: function isActive() { + var active; + ttEach(this.first(), function(t) { + active = t.isActive(); + }); + return active; + }, + activate: function activate() { + ttEach(this, function(t) { + t.activate(); + }); + return this; + }, + deactivate: function deactivate() { + ttEach(this, function(t) { + t.deactivate(); + }); + return this; + }, + isOpen: function isOpen() { + var open; + ttEach(this.first(), function(t) { + open = t.isOpen(); + }); + return open; + }, + open: function open() { + ttEach(this, function(t) { + t.open(); + }); + return this; + }, + close: function close() { + ttEach(this, function(t) { + t.close(); + }); + return this; + }, + select: function select(el) { + var success = false, $el = $(el); + ttEach(this.first(), function(t) { + success = t.select($el); + }); + return success; + }, + autocomplete: function autocomplete(el) { + var success = false, $el = $(el); + ttEach(this.first(), function(t) { + success = t.autocomplete($el); + }); + return success; + }, + moveCursor: function moveCursoe(delta) { + var success = false; + ttEach(this.first(), function(t) { + success = t.moveCursor(delta); + }); + return success; + }, + val: function val(newVal) { + var query; + if (!arguments.length) { + ttEach(this.first(), function(t) { + query = t.getVal(); + }); + return query; + } else { + ttEach(this, function(t) { + t.setVal(_.toStr(newVal)); + }); + return this; + } + }, + destroy: function destroy() { + ttEach(this, function(typeahead, $input) { + revert($input); + typeahead.destroy(); + }); + return this; + } + }; + $.fn.typeahead = function(method) { + if (methods[method]) { + return methods[method].apply(this, [].slice.call(arguments, 1)); + } else { + return methods.initialize.apply(this, arguments); + } + }; + $.fn.typeahead.noConflict = function noConflict() { + $.fn.typeahead = old; + return this; + }; + function ttEach($els, fn) { + $els.each(function() { + var $input = $(this), typeahead; + (typeahead = $input.data(keys.typeahead)) && fn(typeahead, $input); + }); + } + function buildHintFromInput($input, www) { + return $input.clone().addClass(www.classes.hint).removeData().css(www.css.hint).css(getBackgroundStyles($input)).prop({ + readonly: true, + required: false + }).removeAttr("id name placeholder").removeClass("required").attr({ + spellcheck: "false", + tabindex: -1 + }); + } + function prepInput($input, www) { + $input.data(keys.attrs, { + dir: $input.attr("dir"), + autocomplete: $input.attr("autocomplete"), + spellcheck: $input.attr("spellcheck"), + style: $input.attr("style") + }); + $input.addClass(www.classes.input).attr({ + spellcheck: false + }); + try { + !$input.attr("dir") && $input.attr("dir", "auto"); + } catch (e) {} + return $input; + } + function getBackgroundStyles($el) { + return { + backgroundAttachment: $el.css("background-attachment"), + backgroundClip: $el.css("background-clip"), + backgroundColor: $el.css("background-color"), + backgroundImage: $el.css("background-image"), + backgroundOrigin: $el.css("background-origin"), + backgroundPosition: $el.css("background-position"), + backgroundRepeat: $el.css("background-repeat"), + backgroundSize: $el.css("background-size") + }; + } + function revert($input) { + var www, $wrapper; + www = $input.data(keys.www); + $wrapper = $input.parent().filter(www.selectors.wrapper); + _.each($input.data(keys.attrs), function(val, key) { + _.isUndefined(val) ? $input.removeAttr(key) : $input.attr(key, val); + }); + $input.removeData(keys.typeahead).removeData(keys.www).removeData(keys.attr).removeClass(www.classes.input); + if ($wrapper.length) { + $input.detach().insertAfter($wrapper); + $wrapper.remove(); + } + } + function $elOrNull(obj) { + var isValid, $el; + isValid = _.isJQuery(obj) || _.isElement(obj); + $el = isValid ? $(obj).first() : []; + return $el.length ? $el : null; + } + })(); +}); \ No newline at end of file diff --git a/3.0.0/latest_version b/3.0.0/latest_version new file mode 100644 index 00000000..4a36342f --- /dev/null +++ b/3.0.0/latest_version @@ -0,0 +1 @@ +3.0.0 diff --git a/3.0.0/search.json b/3.0.0/search.json new file mode 100644 index 00000000..d37b3a86 --- /dev/null +++ b/3.0.0/search.json @@ -0,0 +1 @@ +{"Typealiases.html#/s:4Turf17LocationDirectiona":{"name":"LocationDirection","abstract":"\u003cp\u003eAn azimuth measured in degrees clockwise from true north.\u003c/p\u003e"},"Typealiases.html#/s:4Turf16LocationDistancea":{"name":"LocationDistance","abstract":"\u003cp\u003eA distance in meters.\u003c/p\u003e"},"Typealiases.html#/s:4Turf15LocationDegreesa":{"name":"LocationDegrees","abstract":"\u003cp\u003eA latitude or longitude in degrees.\u003c/p\u003e"},"Typealiases.html#/s:4Turf20LocationCoordinate2Da":{"name":"LocationCoordinate2D","abstract":"\u003cp\u003eA geographic coordinate.\u003c/p\u003e"},"Typealiases.html#/LocationDirection":{"name":"LocationDirection","abstract":"\u003cp\u003eAn azimuth measured in degrees clockwise from true north.\u003c/p\u003e"},"Typealiases.html#/LocationDistance":{"name":"LocationDistance","abstract":"\u003cp\u003eA distance in meters.\u003c/p\u003e"},"Typealiases.html#/LocationDegrees":{"name":"LocationDegrees","abstract":"\u003cp\u003eA latitude or longitude in degrees.\u003c/p\u003e"},"Typealiases.html#/s:4Turf9JSONArraya":{"name":"JSONArray","abstract":"\u003cp\u003eA JSON array of \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbEnums/JSONValue.html\"\u003eJSONValue\u003c/a\u003e\u003c/code\u003e instances.\u003c/p\u003e"},"Typealiases.html#/s:4Turf10JSONObjecta":{"name":"JSONObject","abstract":"\u003cp\u003eA JSON object represented in memory by a dictionary with strings as keys and \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbEnums/JSONValue.html\"\u003eJSONValue\u003c/a\u003e\u003c/code\u003e instances as values.\u003c/p\u003e"},"Typealiases.html#/s:4Turf15LocationRadiansa":{"name":"LocationRadians","abstract":"\u003cp\u003eA latitude or longitude measured in radians, as opposed to \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbTypealiases.html#/s:4Turf15LocationDegreesa\"\u003eLocationDegrees\u003c/a\u003e\u003c/code\u003e, which is measured in degrees of arc.\u003c/p\u003e"},"Typealiases.html#/s:4Turf14RadianDistancea":{"name":"RadianDistance","abstract":"\u003cp\u003eA difference in latitude or longitude measured in radians, as opposed to \u003ccode\u003eCLLocationDegrees\u003c/code\u003e, which is used by some libraries to represent a similar distance measured in degrees of arc.\u003c/p\u003e"},"Typealiases.html#/s:4Turf11LineSegmenta":{"name":"LineSegment","abstract":"\u003cp\u003eA segment between two positions in a \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/LineString.html\"\u003eLineString\u003c/a\u003e\u003c/code\u003e geometry or \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/Ring.html\"\u003eRing\u003c/a\u003e\u003c/code\u003e.\u003c/p\u003e"},"Structs/Ring.html#/s:4Turf4RingV11coordinatesSaySo22CLLocationCoordinate2DVGvp":{"name":"coordinates","abstract":"\u003cp\u003eThe positions at which the linear ring is located.\u003c/p\u003e","parent_name":"Ring"},"Structs/Ring.html#/s:4Turf4RingV11coordinatesACSaySo22CLLocationCoordinate2DVG_tcfc":{"name":"init(coordinates:)","abstract":"\u003cp\u003eInitializes a linear ring defined by the given positions.\u003c/p\u003e","parent_name":"Ring"},"Structs/Ring.html#/s:4Turf4RingV4areaSdvp":{"name":"area","abstract":"\u003cp\u003eCalculate the approximate area of the polygon were it projected onto the earth, in square meters.","parent_name":"Ring"},"Structs/Ring.html#/s:4Turf4RingV8contains_14ignoreBoundarySbSo22CLLocationCoordinate2DV_SbtF":{"name":"contains(_:ignoreBoundary:)","abstract":"\u003cp\u003eDetermines if the given point falls within the ring.","parent_name":"Ring"},"Structs/Ring.html#/s:Se4fromxs7Decoder_p_tKcfc":{"name":"init(from:)","parent_name":"Ring"},"Structs/Ring.html#/s:SE6encode2toys7Encoder_p_tKF":{"name":"encode(to:)","parent_name":"Ring"},"Structs/RadianCoordinate2D.html#/s:4Turf18RadianCoordinate2DV8latitude9longitudeACSd_Sdtcfc":{"name":"init(latitude:longitude:)","abstract":"\u003cp\u003eInitializes a coordinate pair located at the given latitude and longitude.\u003c/p\u003e","parent_name":"RadianCoordinate2D"},"Structs/RadianCoordinate2D.html#/s:4Turf18RadianCoordinate2DVyACSo010CLLocationC1DVcfc":{"name":"init(_:)","abstract":"\u003cp\u003eInitializes a coordinate pair measured in radians that is coincident to the given coordinate pair measured in degrees of arc.\u003c/p\u003e","parent_name":"RadianCoordinate2D"},"Structs/RadianCoordinate2D.html#/s:4Turf18RadianCoordinate2DV9direction2to10Foundation11MeasurementVySo11NSUnitAngleCGAC_tF":{"name":"direction(to:)","abstract":"\u003cp\u003eReturns direction given two coordinates.\u003c/p\u003e","parent_name":"RadianCoordinate2D"},"Structs/RadianCoordinate2D.html#/s:4Turf18RadianCoordinate2DV10coordinate2at6facingACSd_10Foundation11MeasurementVySo11NSUnitAngleCGtF":{"name":"coordinate(at:facing:)","abstract":"\u003cp\u003eReturns coordinate at a given distance and direction away from coordinate.\u003c/p\u003e","parent_name":"RadianCoordinate2D"},"Structs/RadianCoordinate2D.html#/s:4Turf18RadianCoordinate2DV8distance2toSdAC_tF":{"name":"distance(to:)","abstract":"\u003cp\u003eReturns the Haversine distance between two coordinates measured in radians.\u003c/p\u003e","parent_name":"RadianCoordinate2D"},"Structs/Polygon.html#/s:4Turf7PolygonV11coordinatesSaySaySo22CLLocationCoordinate2DVGGvp":{"name":"coordinates","abstract":"\u003cp\u003eThe positions at which the polygon is located. Each nested array corresponds to one linear ring.\u003c/p\u003e","parent_name":"Polygon"},"Structs/Polygon.html#/s:4Turf22ForeignMemberContainerP14foreignMembersSDySSAA9JSONValueOSgGvp":{"name":"foreignMembers","parent_name":"Polygon"},"Structs/Polygon.html#/s:4Turf7PolygonVyACSaySaySo22CLLocationCoordinate2DVGGcfc":{"name":"init(_:)","abstract":"\u003cp\u003eInitializes a polygon defined by the given positions.\u003c/p\u003e","parent_name":"Polygon"},"Structs/Polygon.html#/s:4Turf7PolygonV9outerRing10innerRingsAcA0D0V_SayAGGtcfc":{"name":"init(outerRing:innerRings:)","abstract":"\u003cp\u003eInitializes a polygon defined by the given linear rings.\u003c/p\u003e","parent_name":"Polygon"},"Structs/Polygon.html#/s:4Turf7PolygonV6center6radius8verticesACSo22CLLocationCoordinate2DV_SdSitcfc":{"name":"init(center:radius:vertices:)","abstract":"\u003cp\u003eInitializes a polygon as a given center coordinate with a given number of","parent_name":"Polygon"},"Structs/Polygon.html#/s:Se4fromxs7Decoder_p_tKcfc":{"name":"init(from:)","parent_name":"Polygon"},"Structs/Polygon.html#/s:SE6encode2toys7Encoder_p_tKF":{"name":"encode(to:)","parent_name":"Polygon"},"Structs/Polygon.html#/s:4Turf7PolygonV10innerRingsSayAA4RingVGvp":{"name":"innerRings","abstract":"\u003cp\u003eRepresentation of \u003ccode\u003ePolygon\u003c/code\u003es coordinates of inner rings\u003c/p\u003e","parent_name":"Polygon"},"Structs/Polygon.html#/s:4Turf7PolygonV9outerRingAA0D0Vvp":{"name":"outerRing","abstract":"\u003cp\u003eRepresentation of \u003ccode\u003ePolygon\u003c/code\u003es coordinates of outer ring\u003c/p\u003e","parent_name":"Polygon"},"Structs/Polygon.html#/s:4Turf7PolygonV4areaSdvp":{"name":"area","abstract":"\u003cp\u003eThe polygon’s area.\u003c/p\u003e","parent_name":"Polygon"},"Structs/Polygon.html#/s:4Turf7PolygonV8contains_14ignoreBoundarySbSo22CLLocationCoordinate2DV_SbtF":{"name":"contains(_:ignoreBoundary:)","abstract":"\u003cp\u003eReturns whether the given coordinate falls within the polygon and outside of its interior rings.\u003c/p\u003e","parent_name":"Polygon"},"Structs/Polygon.html#/s:4Turf7PolygonV6smooth10iterationsACSi_tF":{"name":"smooth(iterations:)","abstract":"\u003cp\u003eReturns the polygon with corners smoothed out using \u003ca href=\"https://www.cs.unc.edu/%7Edm/UNC/COMP258/LECTURES/Chaikins-Algorithm.pdf\"\u003eChaikin’s algorithm\u003c/a\u003e.\u003c/p\u003e","parent_name":"Polygon"},"Structs/Polygon.html#/s:4Turf7PolygonV10simplified9tolerance14highestQualityACSd_SbtF":{"name":"simplified(tolerance:highestQuality:)","abstract":"\u003cp\u003eReturns a copy of the polygon simplified using the Ramer–Douglas–Peucker algorithm.\u003c/p\u003e","parent_name":"Polygon"},"Structs/Polygon.html#/s:4Turf7PolygonV8simplify9tolerance14highestQualityySd_SbtF":{"name":"simplify(tolerance:highestQuality:)","abstract":"\u003cp\u003eSimplifies the polygon in place using the Ramer–Douglas–Peucker algorithm.\u003c/p\u003e","parent_name":"Polygon"},"Structs/Polygon.html#/s:4Turf7PolygonV6centerSo22CLLocationCoordinate2DVSgvp":{"name":"center","abstract":"\u003cp\u003eCalculates the absolute center of the bounding box.\u003c/p\u003e","parent_name":"Polygon"},"Structs/Polygon.html#/s:4Turf7PolygonV8centroidSo22CLLocationCoordinate2DVSgvp":{"name":"centroid","abstract":"\u003cp\u003eCalculates the centroid using the mean of all vertices.\u003c/p\u003e","parent_name":"Polygon"},"Structs/Polygon.html#/s:4Turf7PolygonV12centerOfMassSo22CLLocationCoordinate2DVSgvp":{"name":"centerOfMass","abstract":"\u003cp\u003eCalculates the \u003ca href=\"https://en.wikipedia.org/wiki/Center_of_mass\"\u003ecenter of mass\u003c/a\u003e using the \u003ca href=\"https://en.wikipedia.org/wiki/Centroid#Centroid_of_polygon\"\u003ecentroid of polygon\u003c/a\u003e formula.\u003c/p\u003e","parent_name":"Polygon"},"Structs/Polygon.html#/s:4Turf19GeometryConvertibleP8geometryAA0B0Ovp":{"name":"geometry","parent_name":"Polygon"},"Structs/Polygon.html#/s:4Turf7PolygonV3wktSSvp":{"name":"wkt","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Polygon"},"Structs/Polygon.html#/s:4Turf7PolygonV3wktACSS_tKcfc":{"name":"init(wkt:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Polygon"},"Structs/Point.html#/s:4Turf5PointV11coordinatesSo22CLLocationCoordinate2DVvp":{"name":"coordinates","abstract":"\u003cp\u003eThe position at which the point is located.\u003c/p\u003e","parent_name":"Point"},"Structs/Point.html#/s:4Turf22ForeignMemberContainerP14foreignMembersSDySSAA9JSONValueOSgGvp":{"name":"foreignMembers","parent_name":"Point"},"Structs/Point.html#/s:4Turf5PointVyACSo22CLLocationCoordinate2DVcfc":{"name":"init(_:)","abstract":"\u003cp\u003eInitializes a point defined by the given position.\u003c/p\u003e","parent_name":"Point"},"Structs/Point.html#/s:Se4fromxs7Decoder_p_tKcfc":{"name":"init(from:)","parent_name":"Point"},"Structs/Point.html#/s:SE6encode2toys7Encoder_p_tKF":{"name":"encode(to:)","parent_name":"Point"},"Structs/Point.html#/s:4Turf19GeometryConvertibleP8geometryAA0B0Ovp":{"name":"geometry","parent_name":"Point"},"Structs/Point.html#/s:4Turf5PointV3wktSSvp":{"name":"wkt","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Point"},"Structs/Point.html#/s:4Turf5PointV3wktACSS_tKcfc":{"name":"init(wkt:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Point"},"Structs/MultiPolygon.html#/s:4Turf12MultiPolygonV11coordinatesSaySaySaySo22CLLocationCoordinate2DVGGGvp":{"name":"coordinates","abstract":"\u003cp\u003eThe positions at which the multipolygon is located. Each nested array corresponds to one polygon.\u003c/p\u003e","parent_name":"MultiPolygon"},"Structs/MultiPolygon.html#/s:4Turf22ForeignMemberContainerP14foreignMembersSDySSAA9JSONValueOSgGvp":{"name":"foreignMembers","parent_name":"MultiPolygon"},"Structs/MultiPolygon.html#/s:4Turf12MultiPolygonV8polygonsSayAA0C0VGvp":{"name":"polygons","abstract":"\u003cp\u003eThe polygon geometries that conceptually form the multipolygon.\u003c/p\u003e","parent_name":"MultiPolygon"},"Structs/MultiPolygon.html#/s:4Turf12MultiPolygonVyACSaySaySaySo22CLLocationCoordinate2DVGGGcfc":{"name":"init(_:)","abstract":"\u003cp\u003eInitializes a multipolygon defined by the given positions.\u003c/p\u003e","parent_name":"MultiPolygon"},"Structs/MultiPolygon.html#/s:4Turf12MultiPolygonVyACSayAA0C0VGcfc":{"name":"init(_:)","abstract":"\u003cp\u003eInitializes a multipolygon coincident to the given polygons.\u003c/p\u003e","parent_name":"MultiPolygon"},"Structs/MultiPolygon.html#/s:Se4fromxs7Decoder_p_tKcfc":{"name":"init(from:)","parent_name":"MultiPolygon"},"Structs/MultiPolygon.html#/s:SE6encode2toys7Encoder_p_tKF":{"name":"encode(to:)","parent_name":"MultiPolygon"},"Structs/MultiPolygon.html#/s:4Turf12MultiPolygonV8contains_14ignoreBoundarySbSo22CLLocationCoordinate2DV_SbtF":{"name":"contains(_:ignoreBoundary:)","abstract":"\u003cp\u003eDetermines if the given coordinate falls within any of the polygons.","parent_name":"MultiPolygon"},"Structs/MultiPolygon.html#/s:4Turf19GeometryConvertibleP8geometryAA0B0Ovp":{"name":"geometry","parent_name":"MultiPolygon"},"Structs/MultiPolygon.html#/s:4Turf12MultiPolygonV3wktSSvp":{"name":"wkt","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MultiPolygon"},"Structs/MultiPolygon.html#/s:4Turf12MultiPolygonV3wktACSS_tKcfc":{"name":"init(wkt:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MultiPolygon"},"Structs/MultiPoint.html#/s:4Turf10MultiPointV11coordinatesSaySo22CLLocationCoordinate2DVGvp":{"name":"coordinates","abstract":"\u003cp\u003eThe positions at which the multipoint is located.\u003c/p\u003e","parent_name":"MultiPoint"},"Structs/MultiPoint.html#/s:4Turf22ForeignMemberContainerP14foreignMembersSDySSAA9JSONValueOSgGvp":{"name":"foreignMembers","parent_name":"MultiPoint"},"Structs/MultiPoint.html#/s:4Turf10MultiPointVyACSaySo22CLLocationCoordinate2DVGcfc":{"name":"init(_:)","abstract":"\u003cp\u003eInitializes a multipoint defined by the given positions.\u003c/p\u003e","parent_name":"MultiPoint"},"Structs/MultiPoint.html#/s:Se4fromxs7Decoder_p_tKcfc":{"name":"init(from:)","parent_name":"MultiPoint"},"Structs/MultiPoint.html#/s:SE6encode2toys7Encoder_p_tKF":{"name":"encode(to:)","parent_name":"MultiPoint"},"Structs/MultiPoint.html#/s:4Turf19GeometryConvertibleP8geometryAA0B0Ovp":{"name":"geometry","parent_name":"MultiPoint"},"Structs/MultiPoint.html#/s:4Turf10MultiPointV3wktSSvp":{"name":"wkt","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MultiPoint"},"Structs/MultiPoint.html#/s:4Turf10MultiPointV3wktACSS_tKcfc":{"name":"init(wkt:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MultiPoint"},"Structs/MultiLineString.html#/s:4Turf15MultiLineStringV11coordinatesSaySaySo22CLLocationCoordinate2DVGGvp":{"name":"coordinates","abstract":"\u003cp\u003eThe positions at which the multi–line string is located. Each nested array corresponds to one line string.\u003c/p\u003e","parent_name":"MultiLineString"},"Structs/MultiLineString.html#/s:4Turf22ForeignMemberContainerP14foreignMembersSDySSAA9JSONValueOSgGvp":{"name":"foreignMembers","parent_name":"MultiLineString"},"Structs/MultiLineString.html#/s:4Turf15MultiLineStringVyACSaySaySo22CLLocationCoordinate2DVGGcfc":{"name":"init(_:)","abstract":"\u003cp\u003eInitializes a multi–line string defined by the given positions.\u003c/p\u003e","parent_name":"MultiLineString"},"Structs/MultiLineString.html#/s:4Turf15MultiLineStringVyAcA7PolygonVcfc":{"name":"init(_:)","abstract":"\u003cp\u003eInitializes a multi–line string coincident to the given polygon’s linear rings.\u003c/p\u003e","parent_name":"MultiLineString"},"Structs/MultiLineString.html#/s:Se4fromxs7Decoder_p_tKcfc":{"name":"init(from:)","parent_name":"MultiLineString"},"Structs/MultiLineString.html#/s:SE6encode2toys7Encoder_p_tKF":{"name":"encode(to:)","parent_name":"MultiLineString"},"Structs/MultiLineString.html#/s:4Turf19GeometryConvertibleP8geometryAA0B0Ovp":{"name":"geometry","parent_name":"MultiLineString"},"Structs/MultiLineString.html#/s:4Turf15MultiLineStringV3wktSSvp":{"name":"wkt","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MultiLineString"},"Structs/MultiLineString.html#/s:4Turf15MultiLineStringV3wktACSS_tKcfc":{"name":"init(wkt:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MultiLineString"},"Structs/LineString/IndexedCoordinate.html#/s:4Turf10LineStringV17IndexedCoordinateV10coordinateSo22CLLocationCoordinate2DVvp":{"name":"coordinate","abstract":"\u003cp\u003eThe coordinate\u003c/p\u003e","parent_name":"IndexedCoordinate"},"Structs/LineString/IndexedCoordinate.html#/s:4Turf10LineStringV17IndexedCoordinateV8distanceSdvp":{"name":"distance","abstract":"\u003cp\u003eThe coordinate’s distance from the start of the polyline\u003c/p\u003e","parent_name":"IndexedCoordinate"},"Structs/LineString.html#/s:4Turf10LineStringV11coordinatesSaySo22CLLocationCoordinate2DVGvp":{"name":"coordinates","abstract":"\u003cp\u003eThe positions at which the line string is located.\u003c/p\u003e","parent_name":"LineString"},"Structs/LineString.html#/s:4Turf22ForeignMemberContainerP14foreignMembersSDySSAA9JSONValueOSgGvp":{"name":"foreignMembers","parent_name":"LineString"},"Structs/LineString.html#/s:4Turf10LineStringVyACSaySo22CLLocationCoordinate2DVGcfc":{"name":"init(_:)","abstract":"\u003cp\u003eInitializes a line string defined by given positions.\u003c/p\u003e","parent_name":"LineString"},"Structs/LineString.html#/s:4Turf10LineStringVyAcA4RingVcfc":{"name":"init(_:)","abstract":"\u003cp\u003eInitializes a line string coincident to the given linear ring.\u003c/p\u003e","parent_name":"LineString"},"Structs/LineString.html#/s:Se4fromxs7Decoder_p_tKcfc":{"name":"init(from:)","parent_name":"LineString"},"Structs/LineString.html#/s:SE6encode2toys7Encoder_p_tKF":{"name":"encode(to:)","parent_name":"LineString"},"Structs/LineString.html#/s:4Turf10LineStringV6bezier10resolution9sharpnessACSgSi_SdtF":{"name":"bezier(resolution:sharpness:)","abstract":"\u003cp\u003eReturns the line string transformed into an approximation of a curve by applying a Bézier spline algorithm.\u003c/p\u003e","parent_name":"LineString"},"Structs/LineString.html#/s:4Turf10LineStringV7trimmed4from2toACSgSd_SdtF":{"name":"trimmed(from:to:)","abstract":"\u003cp\u003eReturns the portion of the line string that begins at the given start distance and extends the given stop distance along the line string.\u003c/p\u003e","parent_name":"LineString"},"Structs/LineString.html#/s:4Turf10LineStringV7trimmed4from8distanceACSgSo22CLLocationCoordinate2DV_SdtF":{"name":"trimmed(from:distance:)","abstract":"\u003cp\u003eReturns the portion of the line string that begins at the given coordinate and extends the given distance along the line string.\u003c/p\u003e","parent_name":"LineString"},"Structs/LineString/IndexedCoordinate.html":{"name":"IndexedCoordinate","abstract":"\u003cp\u003e\u003ccode\u003eIndexedCoordinate\u003c/code\u003e is a coordinate with additional information such as the index from its position in the polyline and distance from the start of the polyline.\u003c/p\u003e","parent_name":"LineString"},"Structs/LineString.html#/s:4Turf10LineStringV19coordinateFromStart8distanceSo22CLLocationCoordinate2DVSgSd_tF":{"name":"coordinateFromStart(distance:)","abstract":"\u003cp\u003eReturns a coordinate along a line string at a certain distance from the start of the polyline.\u003c/p\u003e","parent_name":"LineString"},"Structs/LineString.html#/s:4Turf10LineStringV26indexedCoordinateFromStart8distanceAC07IndexedE0VSgSd_tF":{"name":"indexedCoordinateFromStart(distance:)","abstract":"\u003cp\u003eReturns an indexed coordinate along a line string at a certain distance from the start of the polyline.\u003c/p\u003e","parent_name":"LineString"},"Structs/LineString.html#/s:4Turf10LineStringV8distance4from2toSdSgSo22CLLocationCoordinate2DVSg_AJtF":{"name":"distance(from:to:)","abstract":"\u003cp\u003eReturns the distance along a slice of the line string with the given endpoints.\u003c/p\u003e","parent_name":"LineString"},"Structs/LineString.html#/s:4Turf10LineStringV6sliced4from2toACSgSo22CLLocationCoordinate2DVSg_AJtF":{"name":"sliced(from:to:)","abstract":"\u003cp\u003eReturns a subset of the line string between two given coordinates.\u003c/p\u003e","parent_name":"LineString"},"Structs/LineString.html#/s:4Turf10LineStringV17closestCoordinate2toAC07IndexedE0VSgSo22CLLocationCoordinate2DV_tF":{"name":"closestCoordinate(to:)","abstract":"\u003cp\u003eReturns the geographic coordinate along the line string that is closest to the given coordinate as the crow flies.\u003c/p\u003e","parent_name":"LineString"},"Structs/LineString.html#/s:4Turf10LineStringV10simplified9tolerance14highestQualityACSd_SbtF":{"name":"simplified(tolerance:highestQuality:)","abstract":"\u003cp\u003eReturns a copy of the line string simplified using the Ramer–Douglas–Peucker algorithm.\u003c/p\u003e","parent_name":"LineString"},"Structs/LineString.html#/s:4Turf10LineStringV8simplify9tolerance14highestQualityySd_SbtF":{"name":"simplify(tolerance:highestQuality:)","abstract":"\u003cp\u003eSimplifies the line string in place using the Ramer–Douglas–Peucker algorithm.\u003c/p\u003e","parent_name":"LineString"},"Structs/LineString.html#/s:4Turf10LineStringV13intersections4withSaySo22CLLocationCoordinate2DVGAC_tF":{"name":"intersections(with:)","abstract":"\u003cp\u003eReturns all intersections with another \u003ccode\u003eLineString\u003c/code\u003e.\u003c/p\u003e","parent_name":"LineString"},"Structs/LineString.html#/s:4Turf19GeometryConvertibleP8geometryAA0B0Ovp":{"name":"geometry","parent_name":"LineString"},"Structs/LineString.html#/s:4Turf10LineStringV3wktSSvp":{"name":"wkt","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"LineString"},"Structs/LineString.html#/s:4Turf10LineStringV3wktACSS_tKcfc":{"name":"init(wkt:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"LineString"},"Structs/GeometryCollection.html#/s:4Turf18GeometryCollectionV10geometriesSayAA0B0OGvp":{"name":"geometries","abstract":"\u003cp\u003eThe geometries contained by the geometry collection.\u003c/p\u003e","parent_name":"GeometryCollection"},"Structs/GeometryCollection.html#/s:4Turf22ForeignMemberContainerP14foreignMembersSDySSAA9JSONValueOSgGvp":{"name":"foreignMembers","parent_name":"GeometryCollection"},"Structs/GeometryCollection.html#/s:4Turf18GeometryCollectionV10geometriesACSayAA0B0OG_tcfc":{"name":"init(geometries:)","abstract":"\u003cp\u003eInitializes a geometry collection defined by the given geometries.\u003c/p\u003e","parent_name":"GeometryCollection"},"Structs/GeometryCollection.html#/s:4Turf18GeometryCollectionVyAcA12MultiPolygonVcfc":{"name":"init(_:)","abstract":"\u003cp\u003eInitializes a geometry collection coincident to the given multipolygon.\u003c/p\u003e","parent_name":"GeometryCollection"},"Structs/GeometryCollection.html#/s:Se4fromxs7Decoder_p_tKcfc":{"name":"init(from:)","parent_name":"GeometryCollection"},"Structs/GeometryCollection.html#/s:SE6encode2toys7Encoder_p_tKF":{"name":"encode(to:)","parent_name":"GeometryCollection"},"Structs/GeometryCollection.html#/s:4Turf19GeometryConvertibleP8geometryAA0B0Ovp":{"name":"geometry","parent_name":"GeometryCollection"},"Structs/GeometryCollection.html#/s:4Turf18GeometryCollectionV3wktSSvp":{"name":"wkt","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"GeometryCollection"},"Structs/GeometryCollection.html#/s:4Turf18GeometryCollectionV3wktACSS_tKcfc":{"name":"init(wkt:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"GeometryCollection"},"Structs/FeatureCollection.html#/s:4Turf17FeatureCollectionV8featuresSayAA0B0VGvp":{"name":"features","abstract":"\u003cp\u003eThe features that the collection contains.\u003c/p\u003e","parent_name":"FeatureCollection"},"Structs/FeatureCollection.html#/s:4Turf22ForeignMemberContainerP14foreignMembersSDySSAA9JSONValueOSgGvp":{"name":"foreignMembers","parent_name":"FeatureCollection"},"Structs/FeatureCollection.html#/s:4Turf17FeatureCollectionV8featuresACSayAA0B0VG_tcfc":{"name":"init(features:)","abstract":"\u003cp\u003eInitializes a feature collection containing the given features.\u003c/p\u003e","parent_name":"FeatureCollection"},"Structs/FeatureCollection.html#/s:Se4fromxs7Decoder_p_tKcfc":{"name":"init(from:)","parent_name":"FeatureCollection"},"Structs/FeatureCollection.html#/s:SE6encode2toys7Encoder_p_tKF":{"name":"encode(to:)","parent_name":"FeatureCollection"},"Structs/FeatureCollection.html#/s:4Turf24GeoJSONObjectConvertibleP03geoC0AA0bC0Ovp":{"name":"geoJSONObject","parent_name":"FeatureCollection"},"Structs/Feature.html#/s:4Turf7FeatureV10identifierAA0B10IdentifierOSgvp":{"name":"identifier","abstract":"\u003cp\u003eA string or number that commonly identifies the feature in the context of a data set.\u003c/p\u003e","parent_name":"Feature"},"Structs/Feature.html#/s:4Turf7FeatureV10propertiesSDySSAA9JSONValueOSgGSgvp":{"name":"properties","abstract":"\u003cp\u003eArbitrary, JSON-compatible attributes to associate with the feature.\u003c/p\u003e","parent_name":"Feature"},"Structs/Feature.html#/s:4Turf7FeatureV8geometryAA8GeometryOSgvp":{"name":"geometry","abstract":"\u003cp\u003eThe geometry at which the feature is located.\u003c/p\u003e","parent_name":"Feature"},"Structs/Feature.html#/s:4Turf22ForeignMemberContainerP14foreignMembersSDySSAA9JSONValueOSgGvp":{"name":"foreignMembers","parent_name":"Feature"},"Structs/Feature.html#/s:4Turf7FeatureV8geometryAcA8GeometryO_tcfc":{"name":"init(geometry:)","abstract":"\u003cp\u003eInitializes a feature located at the given geometry.\u003c/p\u003e","parent_name":"Feature"},"Structs/Feature.html#/s:4Turf7FeatureV8geometryAcA19GeometryConvertible_pSg_tcfc":{"name":"init(geometry:)","abstract":"\u003cp\u003eInitializes a feature defined by the given geometry-convertible instance.\u003c/p\u003e","parent_name":"Feature"},"Structs/Feature.html#/s:Se4fromxs7Decoder_p_tKcfc":{"name":"init(from:)","parent_name":"Feature"},"Structs/Feature.html#/s:SE6encode2toys7Encoder_p_tKF":{"name":"encode(to:)","parent_name":"Feature"},"Structs/Feature.html#/s:4Turf24GeoJSONObjectConvertibleP03geoC0AA0bC0Ovp":{"name":"geoJSONObject","parent_name":"Feature"},"Structs/LocationCoordinate2D.html#/latitude":{"name":"latitude","abstract":"\u003cp\u003eThe latitude in degrees.\u003c/p\u003e","parent_name":"LocationCoordinate2D"},"Structs/LocationCoordinate2D.html#/longitude":{"name":"longitude","abstract":"\u003cp\u003eThe longitude in degrees.\u003c/p\u003e","parent_name":"LocationCoordinate2D"},"Structs/LocationCoordinate2D.html#/init(latitude:longitude:)":{"name":"init(latitude:longitude:)","abstract":"\u003cp\u003eCreates a degree-based geographic coordinate.\u003c/p\u003e","parent_name":"LocationCoordinate2D"},"Structs/BoundingBox.html#/s:4Turf11BoundingBoxV9southWestSo22CLLocationCoordinate2DVvp":{"name":"southWest","abstract":"\u003cp\u003eThe southwesternmost position contained in the bounding box.\u003c/p\u003e","parent_name":"BoundingBox"},"Structs/BoundingBox.html#/s:4Turf11BoundingBoxV9northEastSo22CLLocationCoordinate2DVvp":{"name":"northEast","abstract":"\u003cp\u003eThe northeasternmost position contained in the bounding box.\u003c/p\u003e","parent_name":"BoundingBox"},"Structs/BoundingBox.html#/s:4Turf11BoundingBoxV4fromACSgSaySo22CLLocationCoordinate2DVGSg_tcfc":{"name":"init(from:)","abstract":"\u003cp\u003eInitializes the smallest bounding box that contains all the given coordinates.\u003c/p\u003e","parent_name":"BoundingBox"},"Structs/BoundingBox.html#/s:4Turf11BoundingBoxV9southWest9northEastACSo22CLLocationCoordinate2DV_AGtcfc":{"name":"init(southWest:northEast:)","abstract":"\u003cp\u003eInitializes a bounding box defined by its southwesternmost and northeasternmost positions.\u003c/p\u003e","parent_name":"BoundingBox"},"Structs/BoundingBox.html#/s:4Turf11BoundingBoxV8contains_14ignoreBoundarySbSo22CLLocationCoordinate2DV_SbtF":{"name":"contains(_:ignoreBoundary:)","abstract":"\u003cp\u003eReturns a Boolean value indicating whether the bounding box contains the given position.\u003c/p\u003e","parent_name":"BoundingBox"},"Structs/BoundingBox.html#/s:SH4hash4intoys6HasherVz_tF":{"name":"hash(into:)","parent_name":"BoundingBox"},"Structs/BoundingBox.html#/s:SE6encode2toys7Encoder_p_tKF":{"name":"encode(to:)","parent_name":"BoundingBox"},"Structs/BoundingBox.html#/s:Se4fromxs7Decoder_p_tKcfc":{"name":"init(from:)","parent_name":"BoundingBox"},"Structs/BoundingBox.html":{"name":"BoundingBox","abstract":"\u003cp\u003eA \u003ca href=\"https://datatracker.ietf.org/doc/html/rfc7946#section-5\"\u003ebounding box\u003c/a\u003e indicates the extremes of a \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbEnums/GeoJSONObject.html\"\u003eGeoJSONObject\u003c/a\u003e\u003c/code\u003e along the x- and y-axes (longitude and latitude, respectively).\u003c/p\u003e"},"Structs/LocationCoordinate2D.html":{"name":"LocationCoordinate2D","abstract":"\u003cp\u003eA geographic coordinate with its components measured in degrees.\u003c/p\u003e"},"Structs/Feature.html":{"name":"Feature","abstract":"\u003cp\u003eA \u003ca href=\"https://datatracker.ietf.org/doc/html/rfc7946#section-3.2\"\u003eFeature object\u003c/a\u003e represents a spatially bounded thing.\u003c/p\u003e"},"Structs/FeatureCollection.html":{"name":"FeatureCollection","abstract":"\u003cp\u003eA \u003ca href=\"https://datatracker.ietf.org/doc/html/rfc7946#section-3.3\"\u003eFeatureCollection object\u003c/a\u003e is a collection of Feature objects.\u003c/p\u003e"},"Structs/GeometryCollection.html":{"name":"GeometryCollection","abstract":"\u003cp\u003eA \u003ca href=\"https://datatracker.ietf.org/doc/html/rfc7946#section-3.1.8\"\u003eGeometryCollection geometry\u003c/a\u003e is a heterogeneous collection of \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbEnums/Geometry.html\"\u003eGeometry\u003c/a\u003e\u003c/code\u003e objects that are related.\u003c/p\u003e"},"Structs/LineString.html":{"name":"LineString","abstract":"\u003cp\u003eA \u003ca href=\"https://datatracker.ietf.org/doc/html/rfc7946#section-3.1.4\"\u003eLineString geometry\u003c/a\u003e is a collection of two or more positions, each position connected to the next position linearly.\u003c/p\u003e"},"Structs/MultiLineString.html":{"name":"MultiLineString","abstract":"\u003cp\u003eA \u003ca href=\"https://datatracker.ietf.org/doc/html/rfc7946#section-3.1.5\"\u003eMultiLineString geometry\u003c/a\u003e is a collection of \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/LineString.html\"\u003eLineString\u003c/a\u003e\u003c/code\u003e geometries that are disconnected but related.\u003c/p\u003e"},"Structs/MultiPoint.html":{"name":"MultiPoint","abstract":"\u003cp\u003eA \u003ca href=\"https://datatracker.ietf.org/doc/html/rfc7946#section-3.1.3\"\u003eMultiPoint geometry\u003c/a\u003e represents a collection of disconnected but related positions.\u003c/p\u003e"},"Structs/MultiPolygon.html":{"name":"MultiPolygon","abstract":"\u003cp\u003eA \u003ca href=\"https://datatracker.ietf.org/doc/html/rfc7946#section-3.1.7\"\u003eMultiPolygon geometry\u003c/a\u003e is a collection of \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/Polygon.html\"\u003ePolygon\u003c/a\u003e\u003c/code\u003e geometries that are disconnected but related.\u003c/p\u003e"},"Structs/Point.html":{"name":"Point","abstract":"\u003cp\u003eA \u003ca href=\"https://datatracker.ietf.org/doc/html/rfc7946#section-3.1.2\"\u003ePoint geometry\u003c/a\u003e represents a single position.\u003c/p\u003e"},"Structs/Polygon.html":{"name":"Polygon","abstract":"\u003cp\u003eA \u003ca href=\"https://datatracker.ietf.org/doc/html/rfc7946#section-3.1.6\"\u003ePolygon geometry\u003c/a\u003e is conceptually a collection of \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/Ring.html\"\u003eRing\u003c/a\u003e\u003c/code\u003es that form a single connected geometry.\u003c/p\u003e"},"Structs/RadianCoordinate2D.html":{"name":"RadianCoordinate2D","abstract":"\u003cp\u003eA coordinate pair measured in radians, as opposed to \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbTypealiases.html#/s:4Turf20LocationCoordinate2Da\"\u003eLocationCoordinate2D\u003c/a\u003e\u003c/code\u003e, which is measured in degrees of arc.\u003c/p\u003e"},"Structs/Ring.html":{"name":"Ring","abstract":"\u003cp\u003eA \u003ca href=\"https://datatracker.ietf.org/doc/html/rfc7946#section-3.1.6\"\u003elinear ring\u003c/a\u003e is a closed figure bounded by three or more straight line segments.\u003c/p\u003e"},"Protocols/WKTConvertible.html#/s:4Turf14WKTConvertibleP3wktSSvp":{"name":"wkt","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"WKTConvertible"},"Protocols/WKTConvertible.html#/s:4Turf14WKTConvertibleP3wktxSS_tKcfc":{"name":"init(wkt:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"WKTConvertible"},"Protocols/GeometryConvertible.html#/s:4Turf19GeometryConvertibleP8geometryAA0B0Ovp":{"name":"geometry","abstract":"\u003cp\u003eThe instance wrapped in a \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbEnums/Geometry.html\"\u003eGeometry\u003c/a\u003e\u003c/code\u003e instance.\u003c/p\u003e","parent_name":"GeometryConvertible"},"Protocols/ForeignMemberContainer.html#/s:4Turf22ForeignMemberContainerP14foreignMembersSDySSAA9JSONValueOSgGvp":{"name":"foreignMembers","abstract":"\u003cp\u003e\u003ca href=\"https://datatracker.ietf.org/doc/html/rfc7946#section-6.1\"\u003eForeign members\u003c/a\u003e to round-trip to JSON.\u003c/p\u003e","parent_name":"ForeignMemberContainer"},"Protocols/GeoJSONObjectConvertible.html#/s:4Turf24GeoJSONObjectConvertibleP03geoC0AA0bC0Ovp":{"name":"geoJSONObject","abstract":"\u003cp\u003eThe instance wrapped in a \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbEnums/GeoJSONObject.html\"\u003eGeoJSONObject\u003c/a\u003e\u003c/code\u003e instance.\u003c/p\u003e","parent_name":"GeoJSONObjectConvertible"},"Protocols/GeoJSONObjectConvertible.html":{"name":"GeoJSONObjectConvertible","abstract":"\u003cp\u003eA type that can be represented as a \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbEnums/GeoJSONObject.html\"\u003eGeoJSONObject\u003c/a\u003e\u003c/code\u003e instance.\u003c/p\u003e"},"Protocols/ForeignMemberContainer.html":{"name":"ForeignMemberContainer","abstract":"\u003cp\u003eA GeoJSON object that can contain \u003ca href=\"https://datatracker.ietf.org/doc/html/rfc7946#section-6.1\"\u003eforeign members\u003c/a\u003e in arbitrary keys.\u003c/p\u003e"},"Protocols/GeometryConvertible.html":{"name":"GeometryConvertible","abstract":"\u003cp\u003eA type that can be represented as a \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbEnums/Geometry.html\"\u003eGeometry\u003c/a\u003e\u003c/code\u003e instance.\u003c/p\u003e"},"Protocols/WKTConvertible.html":{"name":"WKTConvertible","abstract":"\u003cp\u003eEntity which can be converted to and from \u0026lsquo;Well Known Text\u0026rsquo;.\u003c/p\u003e"},"Functions.html#/s:4Turf12intersectionySo22CLLocationCoordinate2DVSgAD_ADt_AD_ADttF":{"name":"intersection(_:_:)","abstract":"\u003cp\u003eReturns the intersection of two line segments.\u003c/p\u003e"},"Functions.html#/s:4Turf3midySo22CLLocationCoordinate2DVAD_ADtF":{"name":"mid(_:_:)","abstract":"\u003cp\u003eReturns the point midway between two coordinates measured in degrees.\u003c/p\u003e"},"Extensions/JSONObject.html#/s:SD4TurfSSRszAA9JSONValueOSgRs_rlE0A8RawValuea":{"name":"TurfRawValue","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"JSONObject"},"Extensions/JSONObject.html#/s:SD4TurfSSRszAA9JSONValueOSgRs_rlE12turfRawValueSDySSADGSgSDySSypSgG_tcfc":{"name":"init(turfRawValue:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"JSONObject"},"Extensions/JSONObject.html#/s:SD4TurfSSRszAA9JSONValueOSgRs_rlE12turfRawValueSDySSypSgGvp":{"name":"turfRawValue","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"JSONObject"},"Extensions/JSONArray.html#/s:Sa4TurfAA9JSONValueOSgRszlE0A8RawValuea":{"name":"TurfRawValue","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"JSONArray"},"Extensions/JSONArray.html#/s:Sa4TurfAA9JSONValueOSgRszlE12turfRawValueSayADGSgSayypSgG_tcfc":{"name":"init(turfRawValue:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"JSONArray"},"Extensions/JSONArray.html#/s:Sa4TurfAA9JSONValueOSgRszlE12turfRawValueSayypSgGvp":{"name":"turfRawValue","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"JSONArray"},"Extensions/CodingUserInfoKey.html#/s:s17CodingUserInfoKeyV4TurfE22includesForeignMembersABvpZ":{"name":"includesForeignMembers","abstract":"\u003cp\u003eIndicates if coding of foreign members is enabled.\u003c/p\u003e","parent_name":"CodingUserInfoKey"},"Extensions/LocationCoordinate2D.html#/s:So22CLLocationCoordinate2DV4TurfEyAbC06RadianB1DVcfc":{"name":"init(_:)","abstract":"\u003cp\u003eInstantiates a LocationCoordinate2D from a RadianCoordinate2D\u003c/p\u003e","parent_name":"LocationCoordinate2D"},"Extensions/LocationCoordinate2D.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"LocationCoordinate2D"},"Extensions/LocationCoordinate2D.html#/s:So22CLLocationCoordinate2DV4TurfE9direction2toSdAB_tF":{"name":"direction(to:)","abstract":"\u003cp\u003eReturns the direction from the receiver to the given coordinate.\u003c/p\u003e","parent_name":"LocationCoordinate2D"},"Extensions/LocationCoordinate2D.html#/s:So22CLLocationCoordinate2DV4TurfE10coordinate2at6facingABSd_SdtF":{"name":"coordinate(at:facing:)","abstract":"\u003cp\u003eReturns a coordinate a certain Haversine distance away in the given direction.\u003c/p\u003e","parent_name":"LocationCoordinate2D"},"Extensions/LocationCoordinate2D.html#/s:So22CLLocationCoordinate2DV4TurfE10coordinate2at6facingABSd_10Foundation11MeasurementVySo11NSUnitAngleCGtF":{"name":"coordinate(at:facing:)","abstract":"\u003cp\u003eReturns a coordinate a certain Haversine distance away in the given direction.\u003c/p\u003e","parent_name":"LocationCoordinate2D"},"Extensions/LocationCoordinate2D.html#/s:So22CLLocationCoordinate2DV4TurfE8distance2toSdAB_tF":{"name":"distance(to:)","abstract":"\u003cp\u003eReturns the Haversine distance between two coordinates measured in degrees.\u003c/p\u003e","parent_name":"LocationCoordinate2D"},"Extensions/LocationDegrees.html#/s:Sd4TurfE9toRadiansSdyF":{"name":"toRadians()","abstract":"\u003cp\u003eReturns the direction in radians.\u003c/p\u003e","parent_name":"LocationDegrees"},"Extensions/LocationDegrees.html#/s:Sd4TurfE9toDegreesSdyF":{"name":"toDegrees()","abstract":"\u003cp\u003eReturns the direction in degrees.\u003c/p\u003e","parent_name":"LocationDegrees"},"Extensions/LocationDirection.html#/s:Sd4TurfE4wrap3min3maxS2d_SdtF":{"name":"wrap(min:max:)","abstract":"\u003cp\u003eReturns a normalized number given min and max bounds.\u003c/p\u003e","parent_name":"LocationDirection"},"Extensions/LocationDirection.html#/s:Sd4TurfE10difference4fromS2d_tF":{"name":"difference(from:)","abstract":"\u003cp\u003eReturns the smaller difference between the receiver and another direction.\u003c/p\u003e","parent_name":"LocationDirection"},"Extensions.html#/CharacterSet":{"name":"CharacterSet"},"Extensions/LocationDirection.html":{"name":"LocationDirection"},"Extensions/LocationDegrees.html":{"name":"LocationDegrees"},"Extensions/LocationCoordinate2D.html":{"name":"LocationCoordinate2D"},"Extensions/CodingUserInfoKey.html":{"name":"CodingUserInfoKey","abstract":"\u003cp\u003eKey to pass to populate a \u003ccode\u003euserInfo\u003c/code\u003e dictionary, which is passed to the \u003ccode\u003eJSONDecoder\u003c/code\u003e or \u003ccode\u003eJSONEncoder\u003c/code\u003e to enable processing foreign members.\u003c/p\u003e"},"Extensions/JSONArray.html":{"name":"JSONArray"},"Extensions/JSONObject.html":{"name":"JSONObject"},"Enums/JSONValue.html#/s:4Turf9JSONValueO6stringyACSScACmF":{"name":"string(_:)","abstract":"\u003cp\u003eA string.\u003c/p\u003e","parent_name":"JSONValue"},"Enums/JSONValue.html#/s:4Turf9JSONValueO6numberyACSdcACmF":{"name":"number(_:)","abstract":"\u003cp\u003eA floating-point number.\u003c/p\u003e","parent_name":"JSONValue"},"Enums/JSONValue.html#/s:4Turf9JSONValueO7booleanyACSbcACmF":{"name":"boolean(_:)","abstract":"\u003cp\u003eA Boolean value.\u003c/p\u003e","parent_name":"JSONValue"},"Enums/JSONValue.html#/s:4Turf9JSONValueO5arrayyACSayACSgGcACmF":{"name":"array(_:)","abstract":"\u003cp\u003eA heterogeneous array of JSON values and \u003ccode\u003enull\u003c/code\u003e values.\u003c/p\u003e","parent_name":"JSONValue"},"Enums/JSONValue.html#/s:4Turf9JSONValueO6objectyACSDySSACSgGcACmF":{"name":"object(_:)","abstract":"\u003cp\u003eAn object containing JSON values and \u003ccode\u003enull\u003c/code\u003e values keyed by strings.\u003c/p\u003e","parent_name":"JSONValue"},"Enums/JSONValue.html#/s:4Turf9JSONValueOyACSScfc":{"name":"init(_:)","abstract":"\u003cp\u003eInitializes a JSON value representing the given string.\u003c/p\u003e","parent_name":"JSONValue"},"Enums/JSONValue.html#/s:4Turf9JSONValueOyACxcSzRzlufc":{"name":"init(_:)","abstract":"\u003cp\u003eInitializes a JSON value representing the given integer.\u003c/p\u003e","parent_name":"JSONValue"},"Enums/JSONValue.html#/s:4Turf9JSONValueOyACxcSBRzlufc":{"name":"init(_:)","abstract":"\u003cp\u003eInitializes a JSON value representing the given floating-point number.\u003c/p\u003e","parent_name":"JSONValue"},"Enums/JSONValue.html#/s:4Turf9JSONValueOyACSbcfc":{"name":"init(_:)","abstract":"\u003cp\u003eInitializes a JSON value representing the given Boolean value.\u003c/p\u003e","parent_name":"JSONValue"},"Enums/JSONValue.html#/s:4Turf9JSONValueOyACSayACSgGcfc":{"name":"init(_:)","abstract":"\u003cp\u003eInitializes a JSON value representing the given JSON array.\u003c/p\u003e","parent_name":"JSONValue"},"Enums/JSONValue.html#/s:4Turf9JSONValueOyACSDySSACSgGcfc":{"name":"init(_:)","abstract":"\u003cp\u003eInitializes a JSON value representing the given JSON object.\u003c/p\u003e","parent_name":"JSONValue"},"Enums/JSONValue.html#/s:4Turf9JSONValueO6stringSSSgvp":{"name":"string","abstract":"\u003cp\u003eA string value, if the JSON value represents a string.\u003c/p\u003e","parent_name":"JSONValue"},"Enums/JSONValue.html#/s:4Turf9JSONValueO6numberSdSgvp":{"name":"number","abstract":"\u003cp\u003eA floating-point number value, if the JSON value represents a number.\u003c/p\u003e","parent_name":"JSONValue"},"Enums/JSONValue.html#/s:4Turf9JSONValueO7booleanSbSgvp":{"name":"boolean","abstract":"\u003cp\u003eA Boolean value, if the JSON value represents a Boolean.\u003c/p\u003e","parent_name":"JSONValue"},"Enums/JSONValue.html#/s:4Turf9JSONValueO5arraySayACSgGSgvp":{"name":"array","abstract":"\u003cp\u003eAn array of JSON values, if the JSON value represents an array.\u003c/p\u003e","parent_name":"JSONValue"},"Enums/JSONValue.html#/s:4Turf9JSONValueO6objectSDySSACSgGSgvp":{"name":"object","abstract":"\u003cp\u003eAn object containing JSON values keyed by strings, if the JSON value represents an object.\u003c/p\u003e","parent_name":"JSONValue"},"Enums/JSONValue.html#/s:SY8RawValueQa":{"name":"RawValue","parent_name":"JSONValue"},"Enums/JSONValue.html#/s:SY8rawValuexSg03RawB0Qz_tcfc":{"name":"init(rawValue:)","parent_name":"JSONValue"},"Enums/JSONValue.html#/s:SY8rawValue03RawB0Qzvp":{"name":"rawValue","abstract":"\u003cp\u003eThis branch must happen after the \u003ccode\u003eNSNumber\u003c/code\u003e branch","parent_name":"JSONValue"},"Enums/JSONValue.html#/s:s26ExpressibleByStringLiteralP06stringD0x0cD4TypeQz_tcfc":{"name":"init(stringLiteral:)","parent_name":"JSONValue"},"Enums/JSONValue.html#/s:s27ExpressibleByIntegerLiteralP07integerD0x0cD4TypeQz_tcfc":{"name":"init(integerLiteral:)","parent_name":"JSONValue"},"Enums/JSONValue.html#/s:s25ExpressibleByFloatLiteralP05floatD0x0cD4TypeQz_tcfc":{"name":"init(floatLiteral:)","parent_name":"JSONValue"},"Enums/JSONValue.html#/s:s27ExpressibleByBooleanLiteralP07booleanD0x0cD4TypeQz_tcfc":{"name":"init(booleanLiteral:)","parent_name":"JSONValue"},"Enums/JSONValue.html#/s:s25ExpressibleByArrayLiteralP0cD7ElementQa":{"name":"ArrayLiteralElement","parent_name":"JSONValue"},"Enums/JSONValue.html#/s:s25ExpressibleByArrayLiteralP05arrayD0x0cD7ElementQzd_tcfc":{"name":"init(arrayLiteral:)","parent_name":"JSONValue"},"Enums/JSONValue.html#/s:s30ExpressibleByDictionaryLiteralP3KeyQa":{"name":"Key","parent_name":"JSONValue"},"Enums/JSONValue.html#/s:s30ExpressibleByDictionaryLiteralP5ValueQa":{"name":"Value","parent_name":"JSONValue"},"Enums/JSONValue.html#/s:s30ExpressibleByDictionaryLiteralP010dictionaryD0x3KeyQz_5ValueQztd_tcfc":{"name":"init(dictionaryLiteral:)","parent_name":"JSONValue"},"Enums/JSONValue.html#/s:Se4fromxs7Decoder_p_tKcfc":{"name":"init(from:)","parent_name":"JSONValue"},"Enums/JSONValue.html#/s:SE6encode2toys7Encoder_p_tKF":{"name":"encode(to:)","parent_name":"JSONValue"},"Enums/Geometry.html#/s:4Turf8GeometryO5pointyAcA5PointVcACmF":{"name":"point(_:)","abstract":"\u003cp\u003eA single position.\u003c/p\u003e","parent_name":"Geometry"},"Enums/Geometry.html#/s:4Turf8GeometryO10lineStringyAcA04LineD0VcACmF":{"name":"lineString(_:)","abstract":"\u003cp\u003eA collection of two or more positions, each position connected to the next position linearly.\u003c/p\u003e","parent_name":"Geometry"},"Enums/Geometry.html#/s:4Turf8GeometryO7polygonyAcA7PolygonVcACmF":{"name":"polygon(_:)","abstract":"\u003cp\u003eConceptually, a collection of \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/Ring.html\"\u003eRing\u003c/a\u003e\u003c/code\u003es that form a single connected geometry.\u003c/p\u003e","parent_name":"Geometry"},"Enums/Geometry.html#/s:4Turf8GeometryO10multiPointyAcA05MultiD0VcACmF":{"name":"multiPoint(_:)","abstract":"\u003cp\u003eA collection of positions that are disconnected but related.\u003c/p\u003e","parent_name":"Geometry"},"Enums/Geometry.html#/s:4Turf8GeometryO15multiLineStringyAcA05MultidE0VcACmF":{"name":"multiLineString(_:)","abstract":"\u003cp\u003eA collection of \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/LineString.html\"\u003eLineString\u003c/a\u003e\u003c/code\u003e geometries that are disconnected but related.\u003c/p\u003e","parent_name":"Geometry"},"Enums/Geometry.html#/s:4Turf8GeometryO12multiPolygonyAcA05MultiD0VcACmF":{"name":"multiPolygon(_:)","abstract":"\u003cp\u003eA collection of \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/Polygon.html\"\u003ePolygon\u003c/a\u003e\u003c/code\u003e geometries that are disconnected but related.\u003c/p\u003e","parent_name":"Geometry"},"Enums/Geometry.html#/s:4Turf8GeometryO18geometryCollectionyAcA0bD0VcACmF":{"name":"geometryCollection(_:)","abstract":"\u003cp\u003eA heterogeneous collection of geometries that are related.\u003c/p\u003e","parent_name":"Geometry"},"Enums/Geometry.html#/s:4Turf8GeometryOyAcA0B11Convertible_pcfc":{"name":"init(_:)","abstract":"\u003cp\u003eInitializes a geometry representing the given geometry–convertible instance.\u003c/p\u003e","parent_name":"Geometry"},"Enums/Geometry.html#/s:4Turf24GeoJSONObjectConvertibleP03geoC0AA0bC0Ovp":{"name":"geoJSONObject","parent_name":"Geometry"},"Enums/Geometry.html#/s:Se4fromxs7Decoder_p_tKcfc":{"name":"init(from:)","parent_name":"Geometry"},"Enums/Geometry.html#/s:SE6encode2toys7Encoder_p_tKF":{"name":"encode(to:)","parent_name":"Geometry"},"Enums/Geometry.html#/s:4Turf8GeometryO5pointAA5PointVSgvp":{"name":"point","abstract":"\u003cp\u003eA single position.\u003c/p\u003e","parent_name":"Geometry"},"Enums/Geometry.html#/s:4Turf8GeometryO10lineStringAA04LineD0VSgvp":{"name":"lineString","abstract":"\u003cp\u003eA collection of two or more positions, each position connected to the next position linearly.\u003c/p\u003e","parent_name":"Geometry"},"Enums/Geometry.html#/s:4Turf8GeometryO7polygonAA7PolygonVSgvp":{"name":"polygon","abstract":"\u003cp\u003eConceptually, a collection of \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/Ring.html\"\u003eRing\u003c/a\u003e\u003c/code\u003es that form a single connected geometry.\u003c/p\u003e","parent_name":"Geometry"},"Enums/Geometry.html#/s:4Turf8GeometryO10multiPointAA05MultiD0VSgvp":{"name":"multiPoint","abstract":"\u003cp\u003eA collection of positions that are disconnected but related.\u003c/p\u003e","parent_name":"Geometry"},"Enums/Geometry.html#/s:4Turf8GeometryO15multiLineStringAA05MultidE0VSgvp":{"name":"multiLineString","abstract":"\u003cp\u003eA collection of \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/LineString.html\"\u003eLineString\u003c/a\u003e\u003c/code\u003e geometries that are disconnected but related.\u003c/p\u003e","parent_name":"Geometry"},"Enums/Geometry.html#/s:4Turf8GeometryO12multiPolygonAA05MultiD0VSgvp":{"name":"multiPolygon","abstract":"\u003cp\u003eA collection of \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/Polygon.html\"\u003ePolygon\u003c/a\u003e\u003c/code\u003e geometries that are disconnected but related.\u003c/p\u003e","parent_name":"Geometry"},"Enums/Geometry.html#/s:4Turf8GeometryO18geometryCollectionAA0bD0VSgvp":{"name":"geometryCollection","abstract":"\u003cp\u003eA heterogeneous collection of geometries that are related.\u003c/p\u003e","parent_name":"Geometry"},"Enums/Geometry.html#/s:4Turf19GeometryConvertibleP8geometryAA0B0Ovp":{"name":"geometry","parent_name":"Geometry"},"Enums/Geometry.html#/s:4Turf8GeometryO3wktSSvp":{"name":"wkt","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Geometry"},"Enums/Geometry.html#/s:4Turf8GeometryO3wktACSS_tKcfc":{"name":"init(wkt:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Geometry"},"Enums/GeoJSONObject.html#/s:4Turf13GeoJSONObjectO8geometryyAcA8GeometryOcACmF":{"name":"geometry(_:)","abstract":"\u003cp\u003eA \u003ca href=\"https://datatracker.ietf.org/doc/html/rfc7946#section-3.1\"\u003eGeometry object\u003c/a\u003e represents points, curves, and surfaces in coordinate space.\u003c/p\u003e","parent_name":"GeoJSONObject"},"Enums/GeoJSONObject.html#/s:4Turf13GeoJSONObjectO7featureyAcA7FeatureVcACmF":{"name":"feature(_:)","abstract":"\u003cp\u003eA \u003ca href=\"https://datatracker.ietf.org/doc/html/rfc7946#section-3.2\"\u003eFeature object\u003c/a\u003e represents a spatially bounded thing.\u003c/p\u003e","parent_name":"GeoJSONObject"},"Enums/GeoJSONObject.html#/s:4Turf13GeoJSONObjectO17featureCollectionyAcA07FeatureE0VcACmF":{"name":"featureCollection(_:)","abstract":"\u003cp\u003eA \u003ca href=\"https://datatracker.ietf.org/doc/html/rfc7946#section-3.3\"\u003eFeatureCollection object\u003c/a\u003e is a collection of Feature objects.\u003c/p\u003e","parent_name":"GeoJSONObject"},"Enums/GeoJSONObject.html#/s:4Turf13GeoJSONObjectOyAcA0bC11Convertible_pcfc":{"name":"init(_:)","abstract":"\u003cp\u003eInitializes a GeoJSON object representing the given GeoJSON object–convertible instance.\u003c/p\u003e","parent_name":"GeoJSONObject"},"Enums/GeoJSONObject.html#/s:4Turf13GeoJSONObjectO8geometryAA8GeometryOSgvp":{"name":"geometry","abstract":"\u003cp\u003eA geometry object.\u003c/p\u003e","parent_name":"GeoJSONObject"},"Enums/GeoJSONObject.html#/s:4Turf13GeoJSONObjectO7featureAA7FeatureVSgvp":{"name":"feature","abstract":"\u003cp\u003eA feature object.\u003c/p\u003e","parent_name":"GeoJSONObject"},"Enums/GeoJSONObject.html#/s:4Turf13GeoJSONObjectO17featureCollectionAA07FeatureE0VSgvp":{"name":"featureCollection","abstract":"\u003cp\u003eA feature collection object.\u003c/p\u003e","parent_name":"GeoJSONObject"},"Enums/GeoJSONObject.html#/s:Se4fromxs7Decoder_p_tKcfc":{"name":"init(from:)","parent_name":"GeoJSONObject"},"Enums/GeoJSONObject.html#/s:SE6encode2toys7Encoder_p_tKF":{"name":"encode(to:)","parent_name":"GeoJSONObject"},"Enums/GeoJSONObject.html#/s:4Turf24GeoJSONObjectConvertibleP03geoC0AA0bC0Ovp":{"name":"geoJSONObject","parent_name":"GeoJSONObject"},"Enums/FeatureIdentifier.html#/s:4Turf17FeatureIdentifierO6stringyACSScACmF":{"name":"string(_:)","abstract":"\u003cp\u003eA string.\u003c/p\u003e","parent_name":"FeatureIdentifier"},"Enums/FeatureIdentifier.html#/s:4Turf17FeatureIdentifierO6numberyACSdcACmF":{"name":"number(_:)","abstract":"\u003cp\u003eA floating-point number.\u003c/p\u003e","parent_name":"FeatureIdentifier"},"Enums/FeatureIdentifier.html#/s:4Turf17FeatureIdentifierOyACSScfc":{"name":"init(_:)","abstract":"\u003cp\u003eInitializes a feature identifier representing the given string.\u003c/p\u003e","parent_name":"FeatureIdentifier"},"Enums/FeatureIdentifier.html#/s:4Turf17FeatureIdentifierOyACxcSzRzlufc":{"name":"init(_:)","abstract":"\u003cp\u003eInitializes a feature identifier representing the given integer.\u003c/p\u003e","parent_name":"FeatureIdentifier"},"Enums/FeatureIdentifier.html#/s:4Turf17FeatureIdentifierOyACxcSBRzlufc":{"name":"init(_:)","abstract":"\u003cp\u003eInitializes a feature identifier representing the given floating-point number.\u003c/p\u003e","parent_name":"FeatureIdentifier"},"Enums/FeatureIdentifier.html#/s:SY8RawValueQa":{"name":"RawValue","parent_name":"FeatureIdentifier"},"Enums/FeatureIdentifier.html#/s:SY8rawValuexSg03RawB0Qz_tcfc":{"name":"init(rawValue:)","parent_name":"FeatureIdentifier"},"Enums/FeatureIdentifier.html#/s:SY8rawValue03RawB0Qzvp":{"name":"rawValue","parent_name":"FeatureIdentifier"},"Enums/FeatureIdentifier.html#/s:4Turf17FeatureIdentifierO6stringSSSgvp":{"name":"string","abstract":"\u003cp\u003eA string.\u003c/p\u003e","parent_name":"FeatureIdentifier"},"Enums/FeatureIdentifier.html#/s:4Turf17FeatureIdentifierO6numberSdSgvp":{"name":"number","abstract":"\u003cp\u003eA floating-point number.\u003c/p\u003e","parent_name":"FeatureIdentifier"},"Enums/FeatureIdentifier.html#/s:s26ExpressibleByStringLiteralP06stringD0x0cD4TypeQz_tcfc":{"name":"init(stringLiteral:)","parent_name":"FeatureIdentifier"},"Enums/FeatureIdentifier.html#/s:s27ExpressibleByIntegerLiteralP07integerD0x0cD4TypeQz_tcfc":{"name":"init(integerLiteral:)","parent_name":"FeatureIdentifier"},"Enums/FeatureIdentifier.html#/s:s25ExpressibleByFloatLiteralP05floatD0x0cD4TypeQz_tcfc":{"name":"init(floatLiteral:)","parent_name":"FeatureIdentifier"},"Enums/FeatureIdentifier.html#/s:Se4fromxs7Decoder_p_tKcfc":{"name":"init(from:)","parent_name":"FeatureIdentifier"},"Enums/FeatureIdentifier.html#/s:SE6encode2toys7Encoder_p_tKF":{"name":"encode(to:)","parent_name":"FeatureIdentifier"},"Enums/Consumer/Error/Kind.html#/s:4Turf8ConsumerO5ErrorV4KindO8expectedyAGyx__GACyxGcAImSHRzs8SendableRzlF":{"name":"expected(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Kind"},"Enums/Consumer/Error/Kind.html#/s:4Turf8ConsumerO5ErrorV4KindO15unexpectedTokenyAGyx__GAImSHRzs8SendableRzlF":{"name":"unexpectedToken","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Kind"},"Enums/Consumer/Error/Kind.html#/s:4Turf8ConsumerO5ErrorV4KindO6customyAGyx__GsAD_pcAImSHRzs8SendableRzlF":{"name":"custom(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Kind"},"Enums/Consumer/Error/Kind.html":{"name":"Kind","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Error"},"Enums/Consumer/Error.html#/s:4Turf8ConsumerO5ErrorV4kindAE4KindOyx__Gvp":{"name":"kind","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Error"},"Enums/Consumer/Error.html#/s:4Turf8ConsumerO5ErrorV8locationAC8LocationVyx_GSgvp":{"name":"location","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Error"},"Enums/Consumer/Error.html#/s:4Turf8ConsumerO5ErrorV9remainingSs17UnicodeScalarViewVSgvp":{"name":"remaining","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Error"},"Enums/Consumer/Error.html#/s:4Turf8ConsumerO5ErrorV11descriptionSSvp":{"name":"description","abstract":"\u003cp\u003eHuman-readable error description\u003c/p\u003e","parent_name":"Error"},"Enums/Consumer/Charset.html#/s:4Turf8ConsumerO7CharsetV6rangesSaySNys6UInt32VGGvp":{"name":"ranges","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Charset"},"Enums/Consumer/Match.html#/s:4Turf8ConsumerO5MatchO5tokenyAEyx_GSS_AC8LocationVyx_GtcAGmSHRzs8SendableRzlF":{"name":"token(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Match"},"Enums/Consumer/Match.html#/s:4Turf8ConsumerO5MatchO4nodeyAEyx_GxSg_SayAGGtcAGmSHRzs8SendableRzlF":{"name":"node(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Match"},"Enums/Consumer/Match.html#/s:4Turf8ConsumerO5MatchO8locationAC8LocationVyx_GSgvp":{"name":"location","abstract":"\u003cp\u003eThe location of the match in the original source (if known)\u003c/p\u003e","parent_name":"Match"},"Enums/Consumer/Match.html#/s:4Turf8ConsumerO5MatchO9transformys8Sendable_pSgAHx_SaysAG_pGtKXEKF":{"name":"transform(_:)","abstract":"\u003cp\u003eTransform generic AST to application-specific form\u003c/p\u003e","parent_name":"Match"},"Enums/Consumer/Match.html#/s:4Turf8ConsumerO5MatchO11descriptionSSvp":{"name":"description","abstract":"\u003cp\u003eLisp-like description of the AST\u003c/p\u003e","parent_name":"Match"},"Enums/Consumer/Location.html#/s:4Turf8ConsumerO8LocationV5rangeSnySS5IndexVGvp":{"name":"range","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Location"},"Enums/Consumer/Location.html#/s:4Turf8ConsumerO8LocationV6offsetSi4line_Si6columntvp":{"name":"offset","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Location"},"Enums/Consumer/Location.html#/s:4Turf8ConsumerO8LocationV11descriptionSSvp":{"name":"description","abstract":"\u003cp\u003eHuman-readable description of the location\u003c/p\u003e","parent_name":"Location"},"Enums/Consumer/Location.html#/s:4Turf8ConsumerO8LocationV2eeoiySbAEyx_G_AGtFZ":{"name":"==(_:_:)","abstract":"\u003cp\u003eEquatable implementation\u003c/p\u003e","parent_name":"Location"},"Enums/Consumer/Location.html#/s:4Turf8ConsumerO8LocationV2atyAEyx_GSnySiGFZ":{"name":"at(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Location"},"Enums/Consumer.html#/s:4Turf8ConsumerO6stringyACyxGSScAEmSHRzs8SendableRzlF":{"name":"string(_:)","abstract":"\u003cp\u003ePrimitives\u003c/p\u003e","parent_name":"Consumer"},"Enums/Consumer.html#/s:4Turf8ConsumerO7charsetyACyxGAC7CharsetVyx_GcAEmSHRzs8SendableRzlF":{"name":"charset(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Consumer"},"Enums/Consumer.html#/s:4Turf8ConsumerO3anyyACyxGSayAEGcAEmSHRzs8SendableRzlF":{"name":"any(_:)","abstract":"\u003cp\u003eCombinators\u003c/p\u003e","parent_name":"Consumer"},"Enums/Consumer.html#/s:4Turf8ConsumerO8sequenceyACyxGSayAEGcAEmSHRzs8SendableRzlF":{"name":"sequence(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Consumer"},"Enums/Consumer.html#/s:4Turf8ConsumerO8optionalyACyxGAEcAEmSHRzs8SendableRzlF":{"name":"optional(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Consumer"},"Enums/Consumer.html#/s:4Turf8ConsumerO9oneOrMoreyACyxGAEcAEmSHRzs8SendableRzlF":{"name":"oneOrMore(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Consumer"},"Enums/Consumer.html#/s:4Turf8ConsumerO3notyACyxGAEcAEmSHRzs8SendableRzlF":{"name":"not(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Consumer"},"Enums/Consumer.html#/s:4Turf8ConsumerO7flattenyACyxGAEcAEmSHRzs8SendableRzlF":{"name":"flatten(_:)","abstract":"\u003cp\u003eTransforms\u003c/p\u003e","parent_name":"Consumer"},"Enums/Consumer.html#/s:4Turf8ConsumerO7discardyACyxGAEcAEmSHRzs8SendableRzlF":{"name":"discard(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Consumer"},"Enums/Consumer.html#/s:4Turf8ConsumerO7replaceyACyxGAE_SStcAEmSHRzs8SendableRzlF":{"name":"replace(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Consumer"},"Enums/Consumer.html#/s:4Turf8ConsumerO5labelyACyxGx_AEtcAEmSHRzs8SendableRzlF":{"name":"label(_:_:)","abstract":"\u003cp\u003eReferences\u003c/p\u003e","parent_name":"Consumer"},"Enums/Consumer.html#/s:4Turf8ConsumerO9referenceyACyxGxcAEmSHRzs8SendableRzlF":{"name":"reference(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Consumer"},"Enums/Consumer.html#/s:4Turf8ConsumerO5matchyAC5MatchOyx_GSSKF":{"name":"match(_:)","abstract":"\u003cp\u003eParse input and return matched result\u003c/p\u003e","parent_name":"Consumer"},"Enums/Consumer.html#/s:4Turf8ConsumerO10isOptionalSbvp":{"name":"isOptional","abstract":"\u003cp\u003eWill the consumer match empty input?\u003c/p\u003e","parent_name":"Consumer"},"Enums/Consumer/Location.html":{"name":"Location","abstract":"\u003cp\u003eSource location\u003c/p\u003e","parent_name":"Consumer"},"Enums/Consumer/Match.html":{"name":"Match","abstract":"\u003cp\u003eAbstract syntax tree returned by consumer\u003c/p\u003e","parent_name":"Consumer"},"Enums/Consumer/Charset.html":{"name":"Charset","abstract":"\u003cp\u003eOpaque type used for efficient character matching\u003c/p\u003e","parent_name":"Consumer"},"Enums/Consumer.html#/s:4Turf8ConsumerO9Transforma":{"name":"Transform","abstract":"\u003cp\u003eClosure for transforming a Match to an application-specific data type\u003c/p\u003e","parent_name":"Consumer"},"Enums/Consumer/Error.html":{"name":"Error","abstract":"\u003cp\u003eA Parsing error\u003c/p\u003e","parent_name":"Consumer"},"Enums/Consumer.html#/s:4Turf8ConsumerO13stringLiteralACyxGSS_tcfc":{"name":"init(stringLiteral:)","abstract":"\u003cp\u003eCreate .string() consumer from a string literal\u003c/p\u003e","parent_name":"Consumer"},"Enums/Consumer.html#/s:4Turf8ConsumerO12arrayLiteralACyxGAEd_tcfc":{"name":"init(arrayLiteral:)","abstract":"\u003cp\u003eCreate .sequence() consumer from an array literal\u003c/p\u003e","parent_name":"Consumer"},"Enums/Consumer.html#/s:4Turf8ConsumerO1ooiyACyxGAE_AEtFZ":{"name":"|(_:_:)","abstract":"\u003cp\u003eConverts two consumers into an .any() consumer\u003c/p\u003e","parent_name":"Consumer"},"Enums/Consumer.html#/s:4Turf8ConsumerO9characteryACyxGs7UnicodeO6ScalarVFZ":{"name":"character(_:)","abstract":"\u003cp\u003eMatch a character\u003c/p\u003e","parent_name":"Consumer"},"Enums/Consumer.html#/s:4Turf8ConsumerO9character2inACyxGSNys7UnicodeO6ScalarVG_tFZ":{"name":"character(in:)","abstract":"\u003cp\u003eMatch character in range\u003c/p\u003e","parent_name":"Consumer"},"Enums/Consumer.html#/s:4Turf8ConsumerO9character2inACyxGSS_tFZ":{"name":"character(in:)","abstract":"\u003cp\u003eMatch character in string\u003c/p\u003e","parent_name":"Consumer"},"Enums/Consumer.html#/s:4Turf8ConsumerO9character2inACyxG10Foundation12CharacterSetV_tFZ":{"name":"character(in:)","abstract":"\u003cp\u003eMatch character in set\u003c/p\u003e","parent_name":"Consumer"},"Enums/Consumer.html#/s:4Turf8ConsumerO12anyCharacter6exceptACyxGs7UnicodeO6ScalarVd_tFZ":{"name":"anyCharacter(except:)","abstract":"\u003cp\u003eMatch any character except the one(s) specified\u003c/p\u003e","parent_name":"Consumer"},"Enums/Consumer.html#/s:4Turf8ConsumerO12anyCharacter6exceptACyxG10Foundation0D3SetV_tFZ":{"name":"anyCharacter(except:)","abstract":"\u003cp\u003eMatch any character except the specified set\u003c/p\u003e","parent_name":"Consumer"},"Enums/Consumer.html#/s:4Turf8ConsumerO10zeroOrMoreyACyxGAEFZ":{"name":"zeroOrMore(_:)","abstract":"\u003cp\u003eMatches a list of zero or more \u003ccode\u003econsumer\u003c/code\u003e instances\u003c/p\u003e","parent_name":"Consumer"},"Enums/Consumer.html#/s:4Turf8ConsumerO11interleavedyACyxGAE_AEtFZ":{"name":"interleaved(_:_:)","abstract":"\u003cp\u003eMatches one or more \u003ccode\u003econsumer\u003c/code\u003e instances, separated by an instance of \u003ccode\u003eseparator\u003c/code\u003e","parent_name":"Consumer"},"Enums/Consumer.html#/s:4Turf8ConsumerO6ignore_2inACyxGAF_AFtFZ":{"name":"ignore(_:in:)","abstract":"\u003cp\u003eMatches the \u003ccode\u003etarget\u003c/code\u003e consumer, ignoring any instances of the \u003ccode\u003eignored\u003c/code\u003e consumer","parent_name":"Consumer"},"Enums/Consumer.html#/s:4Turf8ConsumerO11descriptionSSvp":{"name":"description","abstract":"\u003cp\u003eHuman-readable description of what consumer matches\u003c/p\u003e","parent_name":"Consumer"},"Enums/Consumer.html":{"name":"Consumer","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Enums/FeatureIdentifier.html":{"name":"FeatureIdentifier","abstract":"\u003cp\u003eA \u003ca href=\"https://datatracker.ietf.org/doc/html/rfc7946#section-3.2\"\u003efeature identifier\u003c/a\u003e identifies a \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/Feature.html\"\u003eFeature\u003c/a\u003e\u003c/code\u003e object.\u003c/p\u003e"},"Enums/GeoJSONObject.html":{"name":"GeoJSONObject","abstract":"\u003cp\u003eA \u003ca href=\"https://datatracker.ietf.org/doc/html/rfc7946#section-3\"\u003eGeoJSON object\u003c/a\u003e represents a Geometry, Feature, or collection of Features.\u003c/p\u003e"},"Enums/Geometry.html":{"name":"Geometry","abstract":"\u003cp\u003eA \u003ca href=\"https://datatracker.ietf.org/doc/html/rfc7946#section-3.1\"\u003eGeometry object\u003c/a\u003e represents points, curves, and surfaces in coordinate space. Use an instance of this enumeration whenever a value could be any kind of Geometry object.\u003c/p\u003e"},"Enums/JSONValue.html":{"name":"JSONValue","abstract":"\u003cp\u003eA JSON value represents an object, array, or fragment.\u003c/p\u003e"},"Enums.html":{"name":"Enumerations","abstract":"\u003cp\u003eThe following enumerations are available globally.\u003c/p\u003e"},"Extensions.html":{"name":"Extensions","abstract":"\u003cp\u003eThe following extensions are available globally.\u003c/p\u003e"},"Functions.html":{"name":"Functions","abstract":"\u003cp\u003eThe following functions are available globally.\u003c/p\u003e"},"Protocols.html":{"name":"Protocols","abstract":"\u003cp\u003eThe following protocols are available globally.\u003c/p\u003e"},"Structs.html":{"name":"Structures","abstract":"\u003cp\u003eThe following structures are available globally.\u003c/p\u003e"},"Typealiases.html":{"name":"Type Aliases","abstract":"\u003cp\u003eThe following type aliases are available globally.\u003c/p\u003e"}} \ No newline at end of file diff --git a/3.0.0/undocumented.json b/3.0.0/undocumented.json new file mode 100644 index 00000000..edf78921 --- /dev/null +++ b/3.0.0/undocumented.json @@ -0,0 +1,362 @@ +{ + "warnings": [ + { + "file": "/Volumes/mapbox/turf-swift/Sources/Turf/Consumer/Consumer.swift", + "line": 36, + "symbol": "Consumer", + "symbol_kind": "source.lang.swift.decl.enum", + "warning": "undocumented" + }, + { + "file": "/Volumes/mapbox/turf-swift/Sources/Turf/Consumer/Consumer.swift", + "line": 39, + "symbol": "Consumer.charset(_:)", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Volumes/mapbox/turf-swift/Sources/Turf/Consumer/Consumer.swift", + "line": 43, + "symbol": "Consumer.sequence(_:)", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Volumes/mapbox/turf-swift/Sources/Turf/Consumer/Consumer.swift", + "line": 44, + "symbol": "Consumer.optional(_:)", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Volumes/mapbox/turf-swift/Sources/Turf/Consumer/Consumer.swift", + "line": 45, + "symbol": "Consumer.oneOrMore(_:)", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Volumes/mapbox/turf-swift/Sources/Turf/Consumer/Consumer.swift", + "line": 46, + "symbol": "Consumer.not(_:)", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Volumes/mapbox/turf-swift/Sources/Turf/Consumer/Consumer.swift", + "line": 50, + "symbol": "Consumer.discard(_:)", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Volumes/mapbox/turf-swift/Sources/Turf/Consumer/Consumer.swift", + "line": 51, + "symbol": "Consumer.replace(_:_:)", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Volumes/mapbox/turf-swift/Sources/Turf/Consumer/Consumer.swift", + "line": 55, + "symbol": "Consumer.reference(_:)", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Volumes/mapbox/turf-swift/Sources/Turf/Consumer/Consumer.swift", + "line": 60, + "symbol": "Consumer", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Volumes/mapbox/turf-swift/Sources/Turf/Consumer/Consumer.swift", + "line": 72, + "symbol": "Consumer.Location.range", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Volumes/mapbox/turf-swift/Sources/Turf/Consumer/Consumer.swift", + "line": 73, + "symbol": "Consumer.Location.offset", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Volumes/mapbox/turf-swift/Sources/Turf/Consumer/Consumer.swift", + "line": 78, + "symbol": "Consumer.Match.token(_:_:)", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Volumes/mapbox/turf-swift/Sources/Turf/Consumer/Consumer.swift", + "line": 79, + "symbol": "Consumer.Match.node(_:_:)", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Volumes/mapbox/turf-swift/Sources/Turf/Consumer/Consumer.swift", + "line": 101, + "symbol": "Consumer.Error.Kind", + "symbol_kind": "source.lang.swift.decl.enum", + "warning": "undocumented" + }, + { + "file": "/Volumes/mapbox/turf-swift/Sources/Turf/Consumer/Consumer.swift", + "line": 102, + "symbol": "Consumer.Error.Kind.expected(_:)", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Volumes/mapbox/turf-swift/Sources/Turf/Consumer/Consumer.swift", + "line": 103, + "symbol": "Consumer.Error.Kind.unexpectedToken", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Volumes/mapbox/turf-swift/Sources/Turf/Consumer/Consumer.swift", + "line": 104, + "symbol": "Consumer.Error.Kind.custom(_:)", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Volumes/mapbox/turf-swift/Sources/Turf/Consumer/Consumer.swift", + "line": 107, + "symbol": "Consumer.Error.kind", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Volumes/mapbox/turf-swift/Sources/Turf/Consumer/Consumer.swift", + "line": 108, + "symbol": "Consumer.Error.location", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Volumes/mapbox/turf-swift/Sources/Turf/Consumer/Consumer.swift", + "line": 109, + "symbol": "Consumer.Error.remaining", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Volumes/mapbox/turf-swift/Sources/Turf/Consumer/Consumer.swift", + "line": 117, + "symbol": "Consumer", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Volumes/mapbox/turf-swift/Sources/Turf/Consumer/Consumer.swift", + "line": 156, + "symbol": "Consumer", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Volumes/mapbox/turf-swift/Sources/Turf/Consumer/Consumer.swift", + "line": 191, + "symbol": "Consumer", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Volumes/mapbox/turf-swift/Sources/Turf/Consumer/Consumer.swift", + "line": 213, + "symbol": "Consumer", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Volumes/mapbox/turf-swift/Sources/Turf/Consumer/Consumer.swift", + "line": 655, + "symbol": "Consumer.Location.at(_:)", + "symbol_kind": "source.lang.swift.decl.function.method.static", + "warning": "undocumented" + }, + { + "file": "/Volumes/mapbox/turf-swift/Sources/Turf/Consumer/Consumer.swift", + "line": 687, + "symbol": "Consumer.Charset.ranges", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Volumes/mapbox/turf-swift/Sources/Turf/JSON.swift", + "line": 181, + "symbol": "JSONArray.TurfRawValue", + "symbol_kind": "source.lang.swift.decl.typealias", + "warning": "undocumented" + }, + { + "file": "/Volumes/mapbox/turf-swift/Sources/Turf/JSON.swift", + "line": 183, + "symbol": "JSONArray.init(turfRawValue:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Volumes/mapbox/turf-swift/Sources/Turf/JSON.swift", + "line": 187, + "symbol": "JSONArray.turfRawValue", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Volumes/mapbox/turf-swift/Sources/Turf/JSON.swift", + "line": 198, + "symbol": "JSONObject.TurfRawValue", + "symbol_kind": "source.lang.swift.decl.typealias", + "warning": "undocumented" + }, + { + "file": "/Volumes/mapbox/turf-swift/Sources/Turf/JSON.swift", + "line": 200, + "symbol": "JSONObject.init(turfRawValue:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Volumes/mapbox/turf-swift/Sources/Turf/JSON.swift", + "line": 204, + "symbol": "JSONObject.turfRawValue", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Volumes/mapbox/turf-swift/Sources/Turf/WKT.swift", + "line": 7, + "symbol": "WKTConvertible.wkt", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Volumes/mapbox/turf-swift/Sources/Turf/WKT.swift", + "line": 8, + "symbol": "WKTConvertible.init(wkt:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Volumes/mapbox/turf-swift/Sources/Turf/WKT.swift", + "line": 12, + "symbol": "Point.wkt", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Volumes/mapbox/turf-swift/Sources/Turf/WKT.swift", + "line": 16, + "symbol": "Point.init(wkt:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Volumes/mapbox/turf-swift/Sources/Turf/WKT.swift", + "line": 22, + "symbol": "MultiPoint.wkt", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Volumes/mapbox/turf-swift/Sources/Turf/WKT.swift", + "line": 26, + "symbol": "MultiPoint.init(wkt:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Volumes/mapbox/turf-swift/Sources/Turf/WKT.swift", + "line": 32, + "symbol": "LineString.wkt", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Volumes/mapbox/turf-swift/Sources/Turf/WKT.swift", + "line": 36, + "symbol": "LineString.init(wkt:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Volumes/mapbox/turf-swift/Sources/Turf/WKT.swift", + "line": 42, + "symbol": "MultiLineString.wkt", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Volumes/mapbox/turf-swift/Sources/Turf/WKT.swift", + "line": 46, + "symbol": "MultiLineString.init(wkt:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Volumes/mapbox/turf-swift/Sources/Turf/WKT.swift", + "line": 52, + "symbol": "Polygon.wkt", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Volumes/mapbox/turf-swift/Sources/Turf/WKT.swift", + "line": 56, + "symbol": "Polygon.init(wkt:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Volumes/mapbox/turf-swift/Sources/Turf/WKT.swift", + "line": 62, + "symbol": "MultiPolygon.wkt", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Volumes/mapbox/turf-swift/Sources/Turf/WKT.swift", + "line": 66, + "symbol": "MultiPolygon.init(wkt:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Volumes/mapbox/turf-swift/Sources/Turf/WKT.swift", + "line": 72, + "symbol": "Geometry.wkt", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Volumes/mapbox/turf-swift/Sources/Turf/WKT.swift", + "line": 91, + "symbol": "Geometry.init(wkt:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Volumes/mapbox/turf-swift/Sources/Turf/WKT.swift", + "line": 98, + "symbol": "GeometryCollection.wkt", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Volumes/mapbox/turf-swift/Sources/Turf/WKT.swift", + "line": 120, + "symbol": "GeometryCollection.init(wkt:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + } + ], + "source_directory": "/Volumes/mapbox/turf-swift" +} \ No newline at end of file diff --git a/index.html b/index.html index b54db652..4261b26e 100644 --- a/index.html +++ b/index.html @@ -1 +1 @@ - +

S?0YWQ888$2_vN%<|vXt=&tU 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 &H*8$K>RQQ521 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 N{QtrRtZ4uO82}c^TR8v# literal 0 HcmV?d00001 diff --git a/3.0.0/docsets/Turf.xml b/3.0.0/docsets/Turf.xml new file mode 100644 index 00000000..fc2ce014 --- /dev/null +++ b/3.0.0/docsets/Turf.xml @@ -0,0 +1 @@ +3.0.0https://mapbox.github.io/turf-swift/3.0.0/docsets/Turf.tgz diff --git a/3.0.0/img/carat.png b/3.0.0/img/carat.png new file mode 100755 index 0000000000000000000000000000000000000000..29d2f7fd4955fca6bc6fb740e0373a2c358c398e GIT binary patch literal 274 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRo!3HEV4DF?Wlw^r(L`iUdT1k0gQ7VIDN`6wR zf@f}GdTLN=VoGJ<$y6JlqAi{-jv*Ddl5#RKJQ5NTUZgiPI4RUKGIKU?u8L&ndhX1t za+0CMVUnT(Gnb}ei=c~x==tMH^F1_tBocXwcoSWoO-SZY-o>!8%^=Bms)(~h;m_U( zXNixk28L}0LS5-jKyq@#2gyS|J&f#pGCLkTc<@2s1dqeyqJ*Rc0tSIETAgmODY;(s z2y|Mcp&2}7rpBprBBB~1qM1`N+}4SoxYVPqsXi&l`rxZp{(w0iSy$Nv5*Vy!RapG^ S^0y4=eg;ohKbLh*2~7a!Pg}VF literal 0 HcmV?d00001 diff --git a/3.0.0/img/dash.png b/3.0.0/img/dash.png new file mode 100755 index 0000000000000000000000000000000000000000..6f694c7a012b417908da3687a0a39aa182e91c74 GIT binary patch literal 1338 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 literal 0 HcmV?d00001 diff --git a/3.0.0/index.html b/3.0.0/index.html new file mode 100644 index 00000000..280eaf8d --- /dev/null +++ b/3.0.0/index.html @@ -0,0 +1,465 @@ + + + + Turf Reference + + + + + + + + + + + + +