Add spatial-coordinate-systems to wasm
This commit is contained in:
parent
670fbf31cb
commit
97814e390a
338
Cargo.lock
generated
338
Cargo.lock
generated
@ -2,21 +2,6 @@
|
||||
# It is not intended for manual editing.
|
||||
version = 3
|
||||
|
||||
[[package]]
|
||||
name = "addr2line"
|
||||
version = "0.19.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a76fd60b23679b7d19bd066031410fb7e458ccc5e958eb5c325888ce4baedc97"
|
||||
dependencies = [
|
||||
"gimli",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "adler"
|
||||
version = "1.0.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
|
||||
|
||||
[[package]]
|
||||
name = "aead"
|
||||
version = "0.5.1"
|
||||
@ -85,12 +70,6 @@ dependencies = [
|
||||
"num-traits",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "assert_approx_eq"
|
||||
version = "1.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3c07dab4369547dbe5114677b33fbbf724971019f3818172d59a97a61c774ffd"
|
||||
|
||||
[[package]]
|
||||
name = "async-stream"
|
||||
version = "0.3.4"
|
||||
@ -150,21 +129,6 @@ version = "1.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
|
||||
|
||||
[[package]]
|
||||
name = "backtrace"
|
||||
version = "0.3.67"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "233d376d6d185f2a3093e58f283f60f880315b6c60075b01f36b3b85154564ca"
|
||||
dependencies = [
|
||||
"addr2line",
|
||||
"cc",
|
||||
"cfg-if",
|
||||
"libc",
|
||||
"miniz_oxide",
|
||||
"object",
|
||||
"rustc-demangle",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "base64"
|
||||
version = "0.20.0"
|
||||
@ -177,7 +141,7 @@ version = "0.3.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6aaf33151a6429fe9211d1b276eafdf70cdff28b071e76c0b0e1503221ea3744"
|
||||
dependencies = [
|
||||
"num-bigint 0.4.3",
|
||||
"num-bigint",
|
||||
"num-integer",
|
||||
"num-traits",
|
||||
]
|
||||
@ -194,16 +158,6 @@ version = "1.3.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
|
||||
|
||||
[[package]]
|
||||
name = "bitvec"
|
||||
version = "0.17.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "41262f11d771fd4a61aa3ce019fca363b4b6c282fca9da2a31186d3965a47a5c"
|
||||
dependencies = [
|
||||
"either",
|
||||
"radium",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "block-buffer"
|
||||
version = "0.10.4"
|
||||
@ -283,7 +237,7 @@ dependencies = [
|
||||
"hkdf",
|
||||
"hmac",
|
||||
"percent-encoding",
|
||||
"rand 0.8.5",
|
||||
"rand",
|
||||
"sha2",
|
||||
"subtle",
|
||||
"time",
|
||||
@ -306,7 +260,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
|
||||
dependencies = [
|
||||
"generic-array",
|
||||
"rand_core 0.6.4",
|
||||
"rand_core",
|
||||
"typenum",
|
||||
]
|
||||
|
||||
@ -384,22 +338,6 @@ dependencies = [
|
||||
"subtle",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "dms-coordinates"
|
||||
version = "1.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ec6b438cc34e673063a715ff761392e195278759fa5d882d6bc6b78e2e30d90d"
|
||||
dependencies = [
|
||||
"geo-types",
|
||||
"gpx",
|
||||
"initial_conditions",
|
||||
"map_3d",
|
||||
"rust-3d",
|
||||
"serde",
|
||||
"serde_derive",
|
||||
"thiserror",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "either"
|
||||
version = "1.8.1"
|
||||
@ -436,16 +374,6 @@ dependencies = [
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "error-chain"
|
||||
version = "0.12.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2d2f06b9cac1506ece98fe3231e3cc9c4410ec3d5b1f24ae1c8946f0742cdefc"
|
||||
dependencies = [
|
||||
"backtrace",
|
||||
"version_check",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "fastrand"
|
||||
version = "1.9.0"
|
||||
@ -475,12 +403,6 @@ version = "1.0.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
|
||||
|
||||
[[package]]
|
||||
name = "fuchsia-cprng"
|
||||
version = "0.1.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba"
|
||||
|
||||
[[package]]
|
||||
name = "futures"
|
||||
version = "0.3.27"
|
||||
@ -569,17 +491,6 @@ dependencies = [
|
||||
"version_check",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "geo-types"
|
||||
version = "0.7.9"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a5f0b3068e1537a4b861ec3734f4aa9c317d537cf0845bf6fb6221973499d26c"
|
||||
dependencies = [
|
||||
"approx",
|
||||
"num-traits",
|
||||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "geoutils"
|
||||
version = "0.5.1"
|
||||
@ -607,32 +518,12 @@ dependencies = [
|
||||
"polyval",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "gimli"
|
||||
version = "0.27.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ad0a93d233ebf96623465aad4046a8d3aa4da22d4f4beba5388838c8a434bbb4"
|
||||
|
||||
[[package]]
|
||||
name = "glob"
|
||||
version = "0.3.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
|
||||
|
||||
[[package]]
|
||||
name = "gpx"
|
||||
version = "0.8.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5b03599b85866c88fd0125db7ca7a683be1550724918682c736c7893a399dc5e"
|
||||
dependencies = [
|
||||
"assert_approx_eq",
|
||||
"error-chain",
|
||||
"geo-types",
|
||||
"thiserror",
|
||||
"time",
|
||||
"xml-rs",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "h2"
|
||||
version = "0.3.16"
|
||||
@ -778,15 +669,6 @@ dependencies = [
|
||||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "initial_conditions"
|
||||
version = "0.4.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6ddf16659f435e5c98d948694a97c33b6660c35adad199ab10362092a45ce921"
|
||||
dependencies = [
|
||||
"num 0.1.42",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "inlinable_string"
|
||||
version = "0.1.15"
|
||||
@ -886,12 +768,6 @@ dependencies = [
|
||||
"tracing-subscriber",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "map_3d"
|
||||
version = "0.1.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b0fc1b6107fbd06c96e5e481fcf3e6575b873eb84f5b68f1f5706cde0fed42c4"
|
||||
|
||||
[[package]]
|
||||
name = "matchers"
|
||||
version = "0.1.0"
|
||||
@ -919,15 +795,6 @@ version = "0.2.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
|
||||
|
||||
[[package]]
|
||||
name = "miniz_oxide"
|
||||
version = "0.6.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b275950c28b37e794e8c55d88aeb5e139d0ce23fdbbeda68f8d7174abdf9e8fa"
|
||||
dependencies = [
|
||||
"adler",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "mio"
|
||||
version = "0.8.6"
|
||||
@ -980,57 +847,6 @@ dependencies = [
|
||||
"winapi",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "num"
|
||||
version = "0.1.42"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4703ad64153382334aa8db57c637364c322d3372e097840c72000dabdcf6156e"
|
||||
dependencies = [
|
||||
"num-bigint 0.1.44",
|
||||
"num-complex 0.1.43",
|
||||
"num-integer",
|
||||
"num-iter",
|
||||
"num-rational 0.1.42",
|
||||
"num-traits",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "num"
|
||||
version = "0.2.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b8536030f9fea7127f841b45bb6243b27255787fb4eb83958aa1ef9d2fdc0c36"
|
||||
dependencies = [
|
||||
"num-bigint 0.2.6",
|
||||
"num-complex 0.2.4",
|
||||
"num-integer",
|
||||
"num-iter",
|
||||
"num-rational 0.2.4",
|
||||
"num-traits",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "num-bigint"
|
||||
version = "0.1.44"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e63899ad0da84ce718c14936262a41cee2c79c981fc0a0e7c7beb47d5a07e8c1"
|
||||
dependencies = [
|
||||
"num-integer",
|
||||
"num-traits",
|
||||
"rand 0.4.6",
|
||||
"rustc-serialize",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "num-bigint"
|
||||
version = "0.2.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "090c7f9998ee0ff65aa5b723e4009f7b217707f1fb5ea551329cc4d6231fb304"
|
||||
dependencies = [
|
||||
"autocfg",
|
||||
"num-integer",
|
||||
"num-traits",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "num-bigint"
|
||||
version = "0.4.3"
|
||||
@ -1042,26 +858,6 @@ dependencies = [
|
||||
"num-traits",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "num-complex"
|
||||
version = "0.1.43"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b288631d7878aaf59442cffd36910ea604ecd7745c36054328595114001c9656"
|
||||
dependencies = [
|
||||
"num-traits",
|
||||
"rustc-serialize",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "num-complex"
|
||||
version = "0.2.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b6b19411a9719e753aff12e5187b74d60d3dc449ec3f4dc21e3989c3f554bc95"
|
||||
dependencies = [
|
||||
"autocfg",
|
||||
"num-traits",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "num-integer"
|
||||
version = "0.1.45"
|
||||
@ -1072,41 +868,6 @@ dependencies = [
|
||||
"num-traits",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "num-iter"
|
||||
version = "0.1.43"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252"
|
||||
dependencies = [
|
||||
"autocfg",
|
||||
"num-integer",
|
||||
"num-traits",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "num-rational"
|
||||
version = "0.1.42"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ee314c74bd753fc86b4780aa9475da469155f3848473a261d2d18e35245a784e"
|
||||
dependencies = [
|
||||
"num-bigint 0.1.44",
|
||||
"num-integer",
|
||||
"num-traits",
|
||||
"rustc-serialize",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "num-rational"
|
||||
version = "0.2.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5c000134b5dbf44adc5cb772486d335293351644b801551abe8f75c84cfa4aef"
|
||||
dependencies = [
|
||||
"autocfg",
|
||||
"num-bigint 0.2.6",
|
||||
"num-integer",
|
||||
"num-traits",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "num-traits"
|
||||
version = "0.2.15"
|
||||
@ -1114,7 +875,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"
|
||||
dependencies = [
|
||||
"autocfg",
|
||||
"libm",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -1127,15 +887,6 @@ dependencies = [
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "object"
|
||||
version = "0.30.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ea86265d3d3dcb6a27fc51bd29a4bf387fae9d2986b823079d4986af253eb439"
|
||||
dependencies = [
|
||||
"memchr",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "once_cell"
|
||||
version = "1.17.1"
|
||||
@ -1232,7 +983,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b1181c94580fa345f50f19d738aaa39c0ed30a600d95cb2d3e23f94266f14fbf"
|
||||
dependencies = [
|
||||
"phf_shared",
|
||||
"rand 0.8.5",
|
||||
"rand",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -1340,25 +1091,6 @@ dependencies = [
|
||||
"proc-macro2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "radium"
|
||||
version = "0.3.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "def50a86306165861203e7f84ecffbbdfdea79f0e51039b33de1e952358c47ac"
|
||||
|
||||
[[package]]
|
||||
name = "rand"
|
||||
version = "0.4.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "552840b97013b1a26992c11eac34bdd778e464601a4c2054b5f0bff7c6761293"
|
||||
dependencies = [
|
||||
"fuchsia-cprng",
|
||||
"libc",
|
||||
"rand_core 0.3.1",
|
||||
"rdrand",
|
||||
"winapi",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rand"
|
||||
version = "0.8.5"
|
||||
@ -1367,7 +1099,7 @@ checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
|
||||
dependencies = [
|
||||
"libc",
|
||||
"rand_chacha",
|
||||
"rand_core 0.6.4",
|
||||
"rand_core",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -1377,24 +1109,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
|
||||
dependencies = [
|
||||
"ppv-lite86",
|
||||
"rand_core 0.6.4",
|
||||
"rand_core",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rand_core"
|
||||
version = "0.3.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b"
|
||||
dependencies = [
|
||||
"rand_core 0.4.2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rand_core"
|
||||
version = "0.4.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc"
|
||||
|
||||
[[package]]
|
||||
name = "rand_core"
|
||||
version = "0.6.4"
|
||||
@ -1404,15 +1121,6 @@ dependencies = [
|
||||
"getrandom",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rdrand"
|
||||
version = "0.4.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2"
|
||||
dependencies = [
|
||||
"rand_core 0.3.1",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "redox_syscall"
|
||||
version = "0.2.16"
|
||||
@ -1490,7 +1198,7 @@ dependencies = [
|
||||
"num_cpus",
|
||||
"parking_lot",
|
||||
"pin-project-lite",
|
||||
"rand 0.8.5",
|
||||
"rand",
|
||||
"ref-cast",
|
||||
"rocket_codegen",
|
||||
"rocket_http",
|
||||
@ -1550,17 +1258,6 @@ dependencies = [
|
||||
"uncased",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rust-3d"
|
||||
version = "0.34.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6ce1e81ec1eec57188d13fdeb9fcdf961914eb0f57e3b40c723be3b9245de9bb"
|
||||
dependencies = [
|
||||
"bitvec",
|
||||
"fnv",
|
||||
"num 0.2.1",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rust-embed"
|
||||
version = "6.6.0"
|
||||
@ -1596,18 +1293,6 @@ dependencies = [
|
||||
"walkdir",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rustc-demangle"
|
||||
version = "0.1.21"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7ef03e0a2b150c7a90d01faf6254c9c48a41e95fb2a8c2ac1c6f0d2b9aefc342"
|
||||
|
||||
[[package]]
|
||||
name = "rustc-serialize"
|
||||
version = "0.3.24"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "dcf128d1287d2ea9d80910b5f1120d0b8eede3fbf1abe91c40d39ea7d51e6fda"
|
||||
|
||||
[[package]]
|
||||
name = "rustix"
|
||||
version = "0.36.10"
|
||||
@ -1762,10 +1447,8 @@ dependencies = [
|
||||
name = "spatial-coordinate-systems"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"dms-coordinates",
|
||||
"nom",
|
||||
"pluscodes",
|
||||
"thiserror",
|
||||
"utm",
|
||||
]
|
||||
|
||||
@ -2411,12 +2094,6 @@ dependencies = [
|
||||
"thiserror",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "xml-rs"
|
||||
version = "0.8.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d2d7d3948613f75c98fd9328cfdcc45acc4d360655289d0a7d4ec931392200a3"
|
||||
|
||||
[[package]]
|
||||
name = "xpin"
|
||||
version = "0.1.0"
|
||||
@ -2433,6 +2110,7 @@ dependencies = [
|
||||
name = "xpin-wasm"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"spatial-coordinate-systems",
|
||||
"wasm-bindgen",
|
||||
"xpin",
|
||||
]
|
||||
|
@ -6,8 +6,18 @@ edition = "2021"
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
dms-coordinates = "1.1.0"
|
||||
# Excluding because rustc-serialize does not work with wasm
|
||||
# dms-coordinates v1.1.0
|
||||
# └── initial_conditions v0.4.0
|
||||
# └── num v0.1.42
|
||||
# ├── num-bigint v0.1.44
|
||||
# │ └── rustc-serialize v0.3.24 <==
|
||||
# ├── num-complex v0.1.43
|
||||
# │ └── rustc-serialize v0.3.24 <==
|
||||
# └── num-rational v0.1.42
|
||||
# └── rustc-serialize v0.3.24 <==
|
||||
# dms-coordinates = "1.1.0"
|
||||
|
||||
nom = "7.1.3"
|
||||
pluscodes = "0.5.0"
|
||||
thiserror = "1.0.40"
|
||||
utm = "0.1.6"
|
||||
|
@ -1,13 +1,6 @@
|
||||
use crate::{
|
||||
common::{optional_separator},
|
||||
};
|
||||
use nom::{
|
||||
combinator::{map_opt},
|
||||
number::complete::double,
|
||||
sequence::{tuple},
|
||||
IResult,
|
||||
};
|
||||
use std::str::FromStr;
|
||||
use crate::common::optional_separator;
|
||||
use nom::{combinator::map_opt, number::complete::double, sequence::tuple, IResult};
|
||||
use std::{fmt, str::FromStr};
|
||||
|
||||
#[derive(PartialEq, Debug)]
|
||||
pub struct Coordinate {
|
||||
@ -35,6 +28,12 @@ impl Coordinate {
|
||||
}
|
||||
}
|
||||
|
||||
impl fmt::Display for Coordinate {
|
||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
write!(f, "{}, {}", self.lat, self.lon)
|
||||
}
|
||||
}
|
||||
|
||||
impl TryFrom<(f64, f64)> for Coordinate {
|
||||
type Error = ();
|
||||
|
||||
|
@ -9,7 +9,7 @@ use nom::{
|
||||
sequence::tuple,
|
||||
IResult,
|
||||
};
|
||||
use std::{convert::Infallible, str::FromStr};
|
||||
use std::{convert::Infallible, fmt, str::FromStr};
|
||||
|
||||
#[derive(PartialEq, Debug)]
|
||||
pub struct Coordinate(pub DMM, pub DMM);
|
||||
@ -67,6 +67,18 @@ impl DMM {
|
||||
}
|
||||
}
|
||||
|
||||
impl fmt::Display for DMM {
|
||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
write!(f, "{}° {}'", self.degrees, self.minutes)
|
||||
}
|
||||
}
|
||||
|
||||
impl fmt::Display for Coordinate {
|
||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
write!(f, "{}, {}", self.0, self.1)
|
||||
}
|
||||
}
|
||||
|
||||
impl TryInto<LatLon> for Coordinate {
|
||||
type Error = ();
|
||||
|
||||
|
@ -7,10 +7,10 @@ pub use dms_coordinates::DMS;
|
||||
use nom::{
|
||||
character::complete::{self},
|
||||
combinator::{map, map_opt},
|
||||
sequence::{tuple},
|
||||
sequence::tuple,
|
||||
IResult,
|
||||
};
|
||||
use std::str::FromStr;
|
||||
use std::{fmt, str::FromStr};
|
||||
|
||||
#[derive(PartialEq, Debug)]
|
||||
pub struct Coordinate(pub DMS, pub DMS);
|
||||
@ -73,60 +73,22 @@ impl FromStr for Coordinate {
|
||||
}
|
||||
}
|
||||
|
||||
// pub fn parse(i: &str) -> IResult<&str, DMS> {
|
||||
// map(
|
||||
// tuple((
|
||||
// // Degrees
|
||||
// complete::i16,
|
||||
// optional_separator('°'),
|
||||
// // Minutes
|
||||
// complete::i16,
|
||||
// optional_separator('\''),
|
||||
// // Seconds
|
||||
// double,
|
||||
// optional_separator('"'),
|
||||
// // Direction
|
||||
// parse_direction,
|
||||
// )),
|
||||
// |(degrees, (), minutes, (), seconds, (), direction)| DMS {
|
||||
// degrees,
|
||||
// minutes,
|
||||
// seconds,
|
||||
// direction,
|
||||
// },
|
||||
// )(i)
|
||||
// }
|
||||
|
||||
// impl FromStr for DMS {
|
||||
// type Err = ();
|
||||
|
||||
// /// Recognizes DMS in the formats:
|
||||
// ///
|
||||
// /// * `40° 31' 21" N, 105° 5' 39" W`
|
||||
// /// * `40 31 21 N, 105 5 39 W`
|
||||
// ///
|
||||
// /// ```rust
|
||||
// /// use spatial_coordinate_systems::dms::DMS;
|
||||
// /// use spatial_coordinate_systems::Direction;
|
||||
// /// use std::str::FromStr;
|
||||
// ///
|
||||
// /// assert_eq!(DMS::from_str("40 31 21 N").unwrap(), DMS {
|
||||
// /// degrees: 40,
|
||||
// /// minutes: 31,
|
||||
// /// seconds: 21_f64,
|
||||
// /// direction: Direction::North,
|
||||
// /// });
|
||||
// /// assert_eq!(DMS::from_str("40°31' 21 \" N").unwrap(), DMS {
|
||||
// /// degrees: 40,
|
||||
// /// minutes: 31,
|
||||
// /// seconds: 21_f64,
|
||||
// /// direction: Direction::North,
|
||||
// /// });
|
||||
// /// ```
|
||||
// fn from_str(i: &str) -> Result<Self, Self::Err> {
|
||||
// DMS::parse(i).map_err(|_| ()).map(|(_, ret)| ret)
|
||||
// }
|
||||
// }
|
||||
impl fmt::Display for Coordinate {
|
||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
write!(
|
||||
f,
|
||||
"{}° {}' {}\"",
|
||||
self.0.degrees, self.0.minutes, self.0.seconds
|
||||
)?;
|
||||
write!(f, ", ")?;
|
||||
write!(
|
||||
f,
|
||||
"{}° {}' {}\"",
|
||||
self.1.degrees, self.1.minutes, self.1.seconds
|
||||
)?;
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
impl TryInto<LatLon> for Coordinate {
|
||||
type Error = ();
|
||||
|
@ -1,8 +1,8 @@
|
||||
use std::str::FromStr;
|
||||
use std::{fmt, str::FromStr};
|
||||
mod common;
|
||||
pub mod dd;
|
||||
pub mod dmm;
|
||||
pub mod dms;
|
||||
// pub mod dmm;
|
||||
// pub mod dms;
|
||||
pub mod plus;
|
||||
pub mod utm;
|
||||
|
||||
@ -38,8 +38,8 @@ impl Direction {
|
||||
#[derive(Debug, PartialEq)]
|
||||
pub enum Coordinate {
|
||||
DD(dd::Coordinate),
|
||||
DMS(dms::Coordinate),
|
||||
DMM(dmm::Coordinate),
|
||||
// DMS(dms::Coordinate),
|
||||
// DMM(dmm::Coordinate),
|
||||
UTM(utm::Coordinate),
|
||||
Plus(plus::Coordinate),
|
||||
}
|
||||
@ -51,8 +51,8 @@ impl Coordinate {
|
||||
space0,
|
||||
alt((
|
||||
map(dd::Coordinate::parse, Coordinate::DD),
|
||||
map(dms::Coordinate::parse, Coordinate::DMS),
|
||||
map(dmm::Coordinate::parse, Coordinate::DMM),
|
||||
// map(dms::Coordinate::parse, Coordinate::DMS),
|
||||
// map(dmm::Coordinate::parse, Coordinate::DMM),
|
||||
map(utm::Coordinate::parse, Coordinate::UTM),
|
||||
map(plus::Coordinate::parse, Coordinate::Plus),
|
||||
)),
|
||||
@ -70,8 +70,8 @@ impl TryFrom<Coordinate> for LatLon {
|
||||
fn try_from(value: Coordinate) -> Result<LatLon, Self::Error> {
|
||||
match value {
|
||||
Coordinate::DD(dd) => dd.try_into().or(Err(())),
|
||||
Coordinate::DMM(dm) => dm.try_into(),
|
||||
Coordinate::DMS(dms) => dms.try_into(),
|
||||
// Coordinate::DMM(dmm) => dmm.try_into(),
|
||||
// Coordinate::DMS(dms) => dms.try_into(),
|
||||
Coordinate::UTM(utm) => utm.try_into(),
|
||||
Coordinate::Plus(plus) => plus.try_into(),
|
||||
}
|
||||
@ -83,16 +83,16 @@ impl From<dd::Coordinate> for Coordinate {
|
||||
Self::DD(c)
|
||||
}
|
||||
}
|
||||
impl From<dms::Coordinate> for Coordinate {
|
||||
fn from(c: dms::Coordinate) -> Self {
|
||||
Self::DMS(c)
|
||||
}
|
||||
}
|
||||
impl From<dmm::Coordinate> for Coordinate {
|
||||
fn from(c: dmm::Coordinate) -> Self {
|
||||
Self::DMM(c)
|
||||
}
|
||||
}
|
||||
// impl From<dms::Coordinate> for Coordinate {
|
||||
// fn from(c: dms::Coordinate) -> Self {
|
||||
// Self::DMS(c)
|
||||
// }
|
||||
// }
|
||||
// impl From<dmm::Coordinate> for Coordinate {
|
||||
// fn from(c: dmm::Coordinate) -> Self {
|
||||
// Self::DMM(c)
|
||||
// }
|
||||
// }
|
||||
impl From<utm::Coordinate> for Coordinate {
|
||||
fn from(c: utm::Coordinate) -> Self {
|
||||
Self::UTM(c)
|
||||
@ -104,18 +104,18 @@ impl From<plus::Coordinate> for Coordinate {
|
||||
}
|
||||
}
|
||||
|
||||
impl TryFrom<Coordinate> for dms::Coordinate {
|
||||
type Error = ();
|
||||
fn try_from(c: Coordinate) -> Result<Self, Self::Error> {
|
||||
dms::Coordinate::try_from(LatLon::try_from(c)?)
|
||||
}
|
||||
}
|
||||
impl TryFrom<Coordinate> for dmm::Coordinate {
|
||||
type Error = ();
|
||||
fn try_from(c: Coordinate) -> Result<Self, Self::Error> {
|
||||
dmm::Coordinate::try_from(LatLon::try_from(c)?).or(Err(()))
|
||||
}
|
||||
}
|
||||
// impl TryFrom<Coordinate> for dms::Coordinate {
|
||||
// type Error = ();
|
||||
// fn try_from(c: Coordinate) -> Result<Self, Self::Error> {
|
||||
// dms::Coordinate::try_from(LatLon::try_from(c)?)
|
||||
// }
|
||||
// }
|
||||
// impl TryFrom<Coordinate> for dmm::Coordinate {
|
||||
// type Error = ();
|
||||
// fn try_from(c: Coordinate) -> Result<Self, Self::Error> {
|
||||
// dmm::Coordinate::try_from(LatLon::try_from(c)?).or(Err(()))
|
||||
// }
|
||||
// }
|
||||
impl TryFrom<Coordinate> for utm::Coordinate {
|
||||
type Error = ();
|
||||
fn try_from(c: Coordinate) -> Result<Self, Self::Error> {
|
||||
@ -129,6 +129,17 @@ impl TryFrom<Coordinate> for plus::Coordinate {
|
||||
}
|
||||
}
|
||||
|
||||
impl fmt::Display for Coordinate {
|
||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
match self {
|
||||
Coordinate::DD(dd) => write!(f, "{}", dd),
|
||||
// Coordinate::DMM(dmm) => write!(f, "{}", dmm),
|
||||
// Coordinate::DMS(dms) => write!(f, "{}", dms),
|
||||
Coordinate::UTM(utm) => write!(f, "{}", utm),
|
||||
Coordinate::Plus(plus) => write!(f, "{}", plus),
|
||||
}
|
||||
}
|
||||
}
|
||||
impl FromStr for Coordinate {
|
||||
type Err = ();
|
||||
|
||||
@ -161,10 +172,10 @@ mod tests {
|
||||
}))
|
||||
);
|
||||
|
||||
assert_eq!(
|
||||
dms::Coordinate::try_from(Coordinate::from_str("0.000000 100.500278").unwrap()),
|
||||
dms::Coordinate::try_from(Coordinate::from_str("0.000000 100.500278").unwrap())
|
||||
)
|
||||
// assert_eq!(
|
||||
// dms::Coordinate::try_from(Coordinate::from_str("0.000000 100.500278").unwrap()),
|
||||
// dms::Coordinate::try_from(Coordinate::from_str("0.000000 100.500278").unwrap())
|
||||
// )
|
||||
|
||||
// assert_eq!(
|
||||
// LatLon::try_from(Coordinate::from_str("0.000000 100.500278").unwrap()),
|
||||
|
@ -1,12 +1,6 @@
|
||||
use crate::{
|
||||
LatLon,
|
||||
};
|
||||
use nom::{
|
||||
bytes::complete::take_while,
|
||||
combinator::{map_opt},
|
||||
IResult,
|
||||
};
|
||||
use std::str::FromStr;
|
||||
use crate::LatLon;
|
||||
use nom::{bytes::complete::take_while, combinator::map_opt, IResult};
|
||||
use std::{fmt, str::FromStr};
|
||||
|
||||
// TODO: Pick an approprite length
|
||||
const PLUSCODE_LENGTH: usize = 8;
|
||||
@ -42,6 +36,12 @@ fn pluscode_chars(i: &str) -> IResult<&str, &str> {
|
||||
take_while(|c| PLUSCODE_CHARS.contains(&c))(i)
|
||||
}
|
||||
|
||||
impl fmt::Display for Coordinate {
|
||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
write!(f, "{}", self.0)
|
||||
}
|
||||
}
|
||||
|
||||
impl TryInto<LatLon> for Coordinate {
|
||||
type Error = ();
|
||||
|
||||
|
@ -9,7 +9,7 @@ use nom::{
|
||||
sequence::tuple,
|
||||
IResult,
|
||||
};
|
||||
use std::str::FromStr;
|
||||
use std::{fmt, str::FromStr};
|
||||
|
||||
#[derive(PartialEq, Debug)]
|
||||
pub struct Coordinate {
|
||||
@ -83,6 +83,16 @@ impl FromStr for Coordinate {
|
||||
}
|
||||
}
|
||||
|
||||
impl fmt::Display for Coordinate {
|
||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
write!(
|
||||
f,
|
||||
"{}{} {} {}",
|
||||
self.zone_num, self.zone_letter, self.easting, self.northing,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
impl TryInto<LatLon> for Coordinate {
|
||||
type Error = ();
|
||||
|
||||
|
@ -11,3 +11,4 @@ crate-type = ["cdylib"]
|
||||
[dependencies]
|
||||
wasm-bindgen = "0.2"
|
||||
xpin = {path=".."}
|
||||
spatial-coordinate-systems = {path="../spatial-coordinate-systems/"}
|
||||
|
@ -46,6 +46,13 @@ impl EncodedAddress {
|
||||
}
|
||||
}
|
||||
|
||||
#[wasm_bindgen]
|
||||
pub fn parse(i: &str) -> Result<String, String> {
|
||||
spatial_coordinate_systems::Coordinate::from_str(i)
|
||||
.map(|c| format!("{c:?}"))
|
||||
.map_err(|()| format!("Could not parse str as a coordinate {i:?}"))
|
||||
}
|
||||
|
||||
impl From<&'_ Address<'_>> for EncodedAddress {
|
||||
fn from(addr: &Address) -> Self {
|
||||
let (lat, lon) = addr.as_lat_lon();
|
||||
|
Loading…
Reference in New Issue
Block a user