im going to bed
This commit is contained in:
parent
ffd34f6fdf
commit
01b40ae057
20 changed files with 1405 additions and 37 deletions
763
Cargo.lock
generated
763
Cargo.lock
generated
|
@ -1,16 +1,386 @@
|
|||
# This file is automatically @generated by Cargo.
|
||||
# It is not intended for manual editing.
|
||||
[[package]]
|
||||
name = "aho-corasick"
|
||||
version = "0.7.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"memchr 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "arrayref"
|
||||
version = "0.3.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "arrayvec"
|
||||
version = "0.5.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "ascii-canvas"
|
||||
version = "2.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"term 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "atty"
|
||||
version = "0.2.14"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"hermit-abi 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "autocfg"
|
||||
version = "0.1.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "backtrace"
|
||||
version = "0.3.40"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"backtrace-sys 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"rustc-demangle 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "backtrace-sys"
|
||||
version = "0.1.32"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"cc 1.0.50 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "base64"
|
||||
version = "0.10.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "bit-set"
|
||||
version = "0.5.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"bit-vec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "bit-vec"
|
||||
version = "0.5.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "bitflags"
|
||||
version = "1.2.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "blake2b_simd"
|
||||
version = "0.5.10"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"arrayref 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"arrayvec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"constant_time_eq 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "block-buffer"
|
||||
version = "0.7.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"block-padding 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "block-padding"
|
||||
version = "0.1.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "byte-tools"
|
||||
version = "0.3.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "byteorder"
|
||||
version = "1.3.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "cc"
|
||||
version = "1.0.50"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "cfg-if"
|
||||
version = "0.1.10"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "cloudabi"
|
||||
version = "0.0.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "constant_time_eq"
|
||||
version = "0.1.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "crossbeam-utils"
|
||||
version = "0.6.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "diff"
|
||||
version = "0.1.12"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "digest"
|
||||
version = "0.8.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "dirs"
|
||||
version = "1.0.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"redox_users 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "docopt"
|
||||
version = "1.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"regex 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"strsim 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "either"
|
||||
version = "1.5.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "ena"
|
||||
version = "0.13.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "enterprise"
|
||||
version = "0.1.0"
|
||||
|
||||
[[package]]
|
||||
name = "enterprise-compiler"
|
||||
version = "0.1.0"
|
||||
|
||||
[[package]]
|
||||
name = "enterprise-macros"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"lalrpop 0.17.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"lalrpop-util 0.17.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"proc-macro2 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"thiserror 1.0.9 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "failure"
|
||||
version = "0.1.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"backtrace 0.3.40 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"failure_derive 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "failure_derive"
|
||||
version = "0.1.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"proc-macro2 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"syn 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"synstructure 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "fake-simd"
|
||||
version = "0.1.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "fixedbitset"
|
||||
version = "0.1.9"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "fuchsia-cprng"
|
||||
version = "0.1.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "generic-array"
|
||||
version = "0.12.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"typenum 1.11.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "hermit-abi"
|
||||
version = "0.1.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "itertools"
|
||||
version = "0.8.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "lalrpop"
|
||||
version = "0.17.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"ascii-canvas 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"atty 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"bit-set 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"diff 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"docopt 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"ena 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"itertools 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"lalrpop-util 0.17.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"petgraph 0.4.13 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"regex 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"regex-syntax 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"string_cache 0.7.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"term 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "lalrpop-util"
|
||||
version = "0.17.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "lazy_static"
|
||||
version = "1.4.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "libc"
|
||||
version = "0.2.66"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "log"
|
||||
version = "0.4.8"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "memchr"
|
||||
version = "2.3.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "new_debug_unreachable"
|
||||
version = "1.0.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "opaque-debug"
|
||||
version = "0.2.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "ordermap"
|
||||
version = "0.3.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "petgraph"
|
||||
version = "0.4.13"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"fixedbitset 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"ordermap 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "phf_generator"
|
||||
version = "0.7.24"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"phf_shared 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "phf_shared"
|
||||
version = "0.7.24"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"siphasher 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "precomputed-hash"
|
||||
version = "0.1.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "proc-macro2"
|
||||
version = "1.0.7"
|
||||
|
@ -27,20 +397,413 @@ dependencies = [
|
|||
"proc-macro2 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rand"
|
||||
version = "0.6.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"rand_jitter 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rand_chacha"
|
||||
version = "0.1.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rand_core"
|
||||
version = "0.3.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rand_core"
|
||||
version = "0.4.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "rand_hc"
|
||||
version = "0.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rand_isaac"
|
||||
version = "0.1.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rand_jitter"
|
||||
version = "0.1.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rand_os"
|
||||
version = "0.1.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rand_pcg"
|
||||
version = "0.1.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rand_xorshift"
|
||||
version = "0.1.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rdrand"
|
||||
version = "0.4.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "redox_syscall"
|
||||
version = "0.1.56"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "redox_users"
|
||||
version = "0.3.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"failure 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"rust-argon2 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "regex"
|
||||
version = "1.3.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"aho-corasick 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"memchr 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"regex-syntax 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"thread_local 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "regex-syntax"
|
||||
version = "0.6.13"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "rust-argon2"
|
||||
version = "0.5.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"blake2b_simd 0.5.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rustc-demangle"
|
||||
version = "0.1.16"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "serde"
|
||||
version = "1.0.104"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde_derive"
|
||||
version = "1.0.104"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"proc-macro2 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"syn 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "sha2"
|
||||
version = "0.8.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"block-buffer 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "siphasher"
|
||||
version = "0.2.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "string_cache"
|
||||
version = "0.7.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"new_debug_unreachable 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"phf_shared 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"precomputed-hash 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"string_cache_codegen 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"string_cache_shared 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "string_cache_codegen"
|
||||
version = "0.4.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"phf_generator 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"phf_shared 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"proc-macro2 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"string_cache_shared 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "string_cache_shared"
|
||||
version = "0.3.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "strsim"
|
||||
version = "0.9.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "syn"
|
||||
version = "1.0.13"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"proc-macro2 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "synstructure"
|
||||
version = "0.12.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"proc-macro2 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"syn 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "term"
|
||||
version = "0.5.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"dirs 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "thiserror"
|
||||
version = "1.0.9"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"thiserror-impl 1.0.9 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "thiserror-impl"
|
||||
version = "1.0.9"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"proc-macro2 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"syn 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "thread_local"
|
||||
version = "1.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "todomvc"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"enterprise 0.1.0",
|
||||
"enterprise-compiler 0.1.0",
|
||||
"enterprise-macros 0.1.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "typenum"
|
||||
version = "1.11.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "unicode-xid"
|
||||
version = "0.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "unicode-xid"
|
||||
version = "0.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "winapi"
|
||||
version = "0.3.8"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "winapi-i686-pc-windows-gnu"
|
||||
version = "0.4.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "winapi-x86_64-pc-windows-gnu"
|
||||
version = "0.4.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[metadata]
|
||||
"checksum aho-corasick 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)" = "58fb5e95d83b38284460a5fda7d6470aa0b8844d283a0b614b8535e880800d2d"
|
||||
"checksum arrayref 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "0d382e583f07208808f6b1249e60848879ba3543f57c32277bf52d69c2f0f0ee"
|
||||
"checksum arrayvec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cff77d8686867eceff3105329d4698d96c2391c176d5d03adc90c7389162b5b8"
|
||||
"checksum ascii-canvas 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ff8eb72df928aafb99fe5d37b383f2fe25bd2a765e3e5f7c365916b6f2463a29"
|
||||
"checksum atty 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)" = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
|
||||
"checksum autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "1d49d90015b3c36167a20fe2810c5cd875ad504b39cff3d4eae7977e6b7c1cb2"
|
||||
"checksum backtrace 0.3.40 (registry+https://github.com/rust-lang/crates.io-index)" = "924c76597f0d9ca25d762c25a4d369d51267536465dc5064bdf0eb073ed477ea"
|
||||
"checksum backtrace-sys 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)" = "5d6575f128516de27e3ce99689419835fce9643a9b215a14d2b5b685be018491"
|
||||
"checksum base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0b25d992356d2eb0ed82172f5248873db5560c4721f564b13cb5193bda5e668e"
|
||||
"checksum bit-set 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e84c238982c4b1e1ee668d136c510c67a13465279c0cb367ea6baf6310620a80"
|
||||
"checksum bit-vec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f59bbe95d4e52a6398ec21238d31577f2b28a9d86807f06ca59d191d8440d0bb"
|
||||
"checksum bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693"
|
||||
"checksum blake2b_simd 0.5.10 (registry+https://github.com/rust-lang/crates.io-index)" = "d8fb2d74254a3a0b5cac33ac9f8ed0e44aa50378d9dbb2e5d83bd21ed1dc2c8a"
|
||||
"checksum block-buffer 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b"
|
||||
"checksum block-padding 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "fa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5"
|
||||
"checksum byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7"
|
||||
"checksum byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a7c3dd8985a7111efc5c80b44e23ecdd8c007de8ade3b96595387e812b957cf5"
|
||||
"checksum cc 1.0.50 (registry+https://github.com/rust-lang/crates.io-index)" = "95e28fa049fda1c330bcf9d723be7663a899c4679724b34c81e9f5a326aab8cd"
|
||||
"checksum cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822"
|
||||
"checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f"
|
||||
"checksum constant_time_eq 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "995a44c877f9212528ccc74b21a232f66ad69001e40ede5bcee2ac9ef2657120"
|
||||
"checksum crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)" = "04973fa96e96579258a5091af6003abde64af786b860f18622b82e026cca60e6"
|
||||
"checksum diff 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "0e25ea47919b1560c4e3b7fe0aaab9becf5b84a10325ddf7db0f0ba5e1026499"
|
||||
"checksum digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5"
|
||||
"checksum dirs 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "3fd78930633bd1c6e35c4b42b1df7b0cbc6bc191146e512bb3bedf243fcc3901"
|
||||
"checksum docopt 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7f525a586d310c87df72ebcd98009e57f1cc030c8c268305287a476beb653969"
|
||||
"checksum either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "bb1f6b1ce1c140482ea30ddd3335fc0024ac7ee112895426e0a629a6c20adfe3"
|
||||
"checksum ena 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8944dc8fa28ce4a38f778bd46bf7d923fe73eed5a439398507246c8e017e6f36"
|
||||
"checksum failure 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "f8273f13c977665c5db7eb2b99ae520952fe5ac831ae4cd09d80c4c7042b5ed9"
|
||||
"checksum failure_derive 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "0bc225b78e0391e4b8683440bf2e63c2deeeb2ce5189eab46e2b68c6d3725d08"
|
||||
"checksum fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed"
|
||||
"checksum fixedbitset 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "86d4de0081402f5e88cdac65c8dcdcc73118c1a7a465e2a05f0da05843a8ea33"
|
||||
"checksum fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba"
|
||||
"checksum generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c68f0274ae0e023facc3c97b2e00f076be70e254bc851d972503b328db79b2ec"
|
||||
"checksum hermit-abi 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "eff2656d88f158ce120947499e971d743c05dbcbed62e5bd2f38f1698bbc3772"
|
||||
"checksum itertools 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f56a2d0bc861f9165be4eb3442afd3c236d8a98afd426f65d92324ae1091a484"
|
||||
"checksum lalrpop 0.17.2 (registry+https://github.com/rust-lang/crates.io-index)" = "64dc3698e75d452867d9bd86f4a723f452ce9d01fe1d55990b79f0c790aa67db"
|
||||
"checksum lalrpop-util 0.17.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c277d18683b36349ab5cd030158b54856fca6bb2d5dc5263b06288f486958b7c"
|
||||
"checksum lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
|
||||
"checksum libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)" = "d515b1f41455adea1313a4a2ac8a8a477634fbae63cc6100e3aebb207ce61558"
|
||||
"checksum log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7"
|
||||
"checksum memchr 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3197e20c7edb283f87c071ddfc7a2cca8f8e0b888c242959846a6fce03c72223"
|
||||
"checksum new_debug_unreachable 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54"
|
||||
"checksum opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c"
|
||||
"checksum ordermap 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "a86ed3f5f244b372d6b1a00b72ef7f8876d0bc6a78a4c9985c53614041512063"
|
||||
"checksum petgraph 0.4.13 (registry+https://github.com/rust-lang/crates.io-index)" = "9c3659d1ee90221741f65dd128d9998311b0e40c5d3c23a62445938214abce4f"
|
||||
"checksum phf_generator 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)" = "09364cc93c159b8b06b1f4dd8a4398984503483891b0c26b867cf431fb132662"
|
||||
"checksum phf_shared 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)" = "234f71a15de2288bcb7e3b6515828d22af7ec8598ee6d24c3b526fa0a80b67a0"
|
||||
"checksum precomputed-hash 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c"
|
||||
"checksum proc-macro2 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)" = "0319972dcae462681daf4da1adeeaa066e3ebd29c69be96c6abb1259d2ee2bcc"
|
||||
"checksum quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "053a8c8bcc71fcce321828dc897a98ab9760bef03a4fc36693c231e5b3216cfe"
|
||||
"checksum rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca"
|
||||
"checksum rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef"
|
||||
"checksum rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b"
|
||||
"checksum rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc"
|
||||
"checksum rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4"
|
||||
"checksum rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08"
|
||||
"checksum rand_jitter 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "1166d5c91dc97b88d1decc3285bb0a99ed84b05cfd0bc2341bdf2d43fc41e39b"
|
||||
"checksum rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071"
|
||||
"checksum rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44"
|
||||
"checksum rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c"
|
||||
"checksum rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2"
|
||||
"checksum redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)" = "2439c63f3f6139d1b57529d16bc3b8bb855230c8efcc5d3a896c8bea7c3b1e84"
|
||||
"checksum redox_users 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4ecedbca3bf205f8d8f5c2b44d83cd0690e39ee84b951ed649e9f1841132b66d"
|
||||
"checksum regex 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "b5508c1941e4e7cb19965abef075d35a9a8b5cdf0846f30b4050e9b55dc55e87"
|
||||
"checksum regex-syntax 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)" = "e734e891f5b408a29efbf8309e656876276f49ab6a6ac208600b4419bd893d90"
|
||||
"checksum rust-argon2 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4ca4eaef519b494d1f2848fc602d18816fed808a981aedf4f1f00ceb7c9d32cf"
|
||||
"checksum rustc-demangle 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "4c691c0e608126e00913e33f0ccf3727d5fc84573623b8d65b2df340b5201783"
|
||||
"checksum serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)" = "414115f25f818d7dfccec8ee535d76949ae78584fc4f79a6f45a904bf8ab4449"
|
||||
"checksum serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)" = "128f9e303a5a29922045a830221b8f78ec74a5f544944f3d5984f8ec3895ef64"
|
||||
"checksum sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "27044adfd2e1f077f649f59deb9490d3941d674002f7d062870a60ebe9bd47a0"
|
||||
"checksum siphasher 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "0b8de496cf83d4ed58b6be86c3a275b8602f6ffe98d3024a869e124147a9a3ac"
|
||||
"checksum string_cache 0.7.5 (registry+https://github.com/rust-lang/crates.io-index)" = "89c058a82f9fd69b1becf8c274f412281038877c553182f1d02eb027045a2d67"
|
||||
"checksum string_cache_codegen 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "f0f45ed1b65bf9a4bf2f7b7dc59212d1926e9eaf00fa998988e420fd124467c6"
|
||||
"checksum string_cache_shared 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b1884d1bc09741d466d9b14e6d37ac89d6909cbcac41dd9ae982d4d063bbedfc"
|
||||
"checksum strsim 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6446ced80d6c486436db5c078dde11a9f73d42b57fb273121e160b84f63d894c"
|
||||
"checksum syn 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)" = "1e4ff033220a41d1a57d8125eab57bf5263783dfdcc18688b1dacc6ce9651ef8"
|
||||
"checksum synstructure 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)" = "67656ea1dc1b41b1451851562ea232ec2e5a80242139f7e679ceccfb5d61f545"
|
||||
"checksum term 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "edd106a334b7657c10b7c540a0106114feadeb4dc314513e97df481d5d966f42"
|
||||
"checksum thiserror 1.0.9 (registry+https://github.com/rust-lang/crates.io-index)" = "6f357d1814b33bc2dc221243f8424104bfe72dbe911d5b71b3816a2dff1c977e"
|
||||
"checksum thiserror-impl 1.0.9 (registry+https://github.com/rust-lang/crates.io-index)" = "eb2e25d25307eb8436894f727aba8f65d07adf02e5b35a13cebed48bd282bfef"
|
||||
"checksum thread_local 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "88ddf1ad580c7e3d1efff877d972bcc93f995556b9087a5a259630985c88ceab"
|
||||
"checksum typenum 1.11.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6d2783fe2d6b8c1101136184eb41be8b1ad379e4657050b8aaff0c79ee7575f9"
|
||||
"checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc"
|
||||
"checksum unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c"
|
||||
"checksum winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "8093091eeb260906a183e6ae1abdba2ef5ef2257a21801128899c3fc699229c6"
|
||||
"checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
|
||||
"checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
|
||||
|
|
|
@ -5,6 +5,6 @@ authors = ["Michael Zhang <iptq@protonmail.com>"]
|
|||
edition = "2018"
|
||||
|
||||
[workspace]
|
||||
members = ["enterprise-macros", "todomvc"]
|
||||
members = ["enterprise-compiler", "enterprise-macros", "todomvc"]
|
||||
|
||||
[dependencies]
|
||||
|
|
7
enterprise-compiler/Cargo.toml
Normal file
7
enterprise-compiler/Cargo.toml
Normal file
|
@ -0,0 +1,7 @@
|
|||
[package]
|
||||
name = "enterprise-compiler"
|
||||
version = "0.1.0"
|
||||
authors = ["Michael Zhang <iptq@protonmail.com>"]
|
||||
edition = "2018"
|
||||
|
||||
[dependencies]
|
6
enterprise-compiler/src/lib.rs
Normal file
6
enterprise-compiler/src/lib.rs
Normal file
|
@ -0,0 +1,6 @@
|
|||
#[derive(Debug)]
|
||||
pub enum Error {}
|
||||
|
||||
pub fn process_root() -> Result<(), Error> {
|
||||
Ok(())
|
||||
}
|
|
@ -7,5 +7,11 @@ edition = "2018"
|
|||
[lib]
|
||||
proc-macro = true
|
||||
|
||||
[build-dependencies]
|
||||
lalrpop = "0.17.2"
|
||||
|
||||
[dependencies]
|
||||
proc-macro2 = { version = "1.0.7", features = ["span-locations"] }
|
||||
quote = "1.0.2"
|
||||
thiserror = "1.0.9"
|
||||
lalrpop-util = "0.17.2"
|
||||
|
|
3
enterprise-macros/build.rs
Normal file
3
enterprise-macros/build.rs
Normal file
|
@ -0,0 +1,3 @@
|
|||
fn main() {
|
||||
lalrpop::process_root().unwrap();
|
||||
}
|
20
enterprise-macros/src/ast.rs
Normal file
20
enterprise-macros/src/ast.rs
Normal file
|
@ -0,0 +1,20 @@
|
|||
#[derive(Debug)]
|
||||
pub enum Toplevel {
|
||||
Use(Use),
|
||||
Component(Component),
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct Use(pub Vec<String>);
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct Component {
|
||||
pub name: String,
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
pub enum ComponentBody {
|
||||
Constructor(),
|
||||
View(),
|
||||
Fn(),
|
||||
}
|
127
enterprise-macros/src/flatten.rs
Normal file
127
enterprise-macros/src/flatten.rs
Normal file
|
@ -0,0 +1,127 @@
|
|||
use std::fmt;
|
||||
|
||||
use lalrpop_util::ParseError;
|
||||
use proc_macro2::{
|
||||
Delimiter, Group, Ident, LineColumn, Literal, Punct, Spacing, Span as Span2, TokenStream,
|
||||
TokenTree,
|
||||
};
|
||||
|
||||
use crate::parser::parser::__ToTriple;
|
||||
|
||||
macro_rules! generate_token {
|
||||
([$($keyword_name:ident: $keyword:ident),* $(,)?]) => {
|
||||
#[derive(Debug, Clone)]
|
||||
pub enum TokenType {
|
||||
Ident(Ident),
|
||||
Punct(char, Punct),
|
||||
Literal(Literal),
|
||||
|
||||
$($keyword_name(Span),)*
|
||||
}
|
||||
|
||||
impl fmt::Display for TokenType {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
use TokenType::*;
|
||||
match self {
|
||||
Ident(ident) => ident.fmt(f),
|
||||
Punct(_, punct) => punct.fmt(f),
|
||||
Literal(literal) => literal.fmt(f),
|
||||
$($keyword_name(_) => f.write_str(stringify!($keyword)),)*
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl TokenType {
|
||||
pub fn span(&self) -> Span {
|
||||
use TokenType::*;
|
||||
match self {
|
||||
Ident(ident) => Span(ident.span()),
|
||||
Punct(_, punct) => Span(punct.span()),
|
||||
Literal(literal) => Span(literal.span()),
|
||||
|
||||
$($keyword_name(span) => *span,)*
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn flatten_tree(token_tree: TokenTree) -> Vec<Token> {
|
||||
match token_tree {
|
||||
TokenTree::Group(group) => {
|
||||
use Delimiter::*;
|
||||
let mut result = flatten(group.stream());
|
||||
let surround = match group.delimiter() {
|
||||
Brace => Some(construct_group_tokens('{', '}', group)),
|
||||
Parenthesis => Some(construct_group_tokens('(', ')', group)),
|
||||
Bracket => Some(construct_group_tokens('[', ']', group)),
|
||||
None => Option::None,
|
||||
};
|
||||
if let Some((start, end)) = surround {
|
||||
result.insert(0, start);
|
||||
result.push(end);
|
||||
}
|
||||
result
|
||||
},
|
||||
TokenTree::Ident(ident) => {
|
||||
let token = match ident.to_string().as_ref() {
|
||||
$(stringify!($keyword) => TokenType::$keyword_name(Span(ident.span())),)*
|
||||
_ => TokenType::Ident(ident),
|
||||
};
|
||||
vec![construct_token(token)]
|
||||
}
|
||||
TokenTree::Punct(punct) => {
|
||||
let token = TokenType::Punct(punct.as_char(), punct);
|
||||
vec![construct_token(token)]
|
||||
}
|
||||
TokenTree::Literal(literal) => {
|
||||
let token = TokenType::Literal(literal);
|
||||
vec![construct_token(token)]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
generate_token!([
|
||||
Component: component,
|
||||
Constructor: constructor,
|
||||
Fn: fn,
|
||||
Use: use,
|
||||
View: view,
|
||||
]);
|
||||
|
||||
pub type Token = Result<(Span, TokenType, Span), ()>;
|
||||
|
||||
pub fn flatten(token_stream: TokenStream) -> Vec<Token> {
|
||||
token_stream.into_iter().flat_map(flatten_tree).collect()
|
||||
}
|
||||
|
||||
fn construct_group_tokens(left: char, right: char, group: Group) -> (Token, Token) {
|
||||
let mut left_punct = Punct::new(left, Spacing::Alone);
|
||||
left_punct.set_span(group.span_open());
|
||||
let mut right_punct = Punct::new(right, Spacing::Alone);
|
||||
right_punct.set_span(group.span_close());
|
||||
(
|
||||
construct_token(TokenType::Punct(left, left_punct)),
|
||||
construct_token(TokenType::Punct(right, right_punct)),
|
||||
)
|
||||
}
|
||||
|
||||
fn construct_token(token: TokenType) -> Token {
|
||||
let span = token.span();
|
||||
Ok((span, token, span))
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug)]
|
||||
pub struct Span(pub Span2);
|
||||
|
||||
impl fmt::Display for Span {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
write!(f, "{:?}", self)
|
||||
}
|
||||
}
|
||||
|
||||
impl Default for Span {
|
||||
fn default() -> Self {
|
||||
Span(Span2::call_site())
|
||||
}
|
||||
}
|
|
@ -1,11 +1,83 @@
|
|||
extern crate proc_macro;
|
||||
#[macro_use]
|
||||
extern crate thiserror;
|
||||
#[macro_use]
|
||||
extern crate lalrpop_util;
|
||||
|
||||
mod ast;
|
||||
mod flatten;
|
||||
|
||||
mod parser {
|
||||
lalrpop_mod!(pub parser);
|
||||
}
|
||||
|
||||
use std::fmt;
|
||||
|
||||
use proc_macro2::TokenStream;
|
||||
use quote::quote;
|
||||
use proc_macro::TokenStream;
|
||||
|
||||
use crate::flatten::{Span, Token, TokenType};
|
||||
use crate::parser::parser::*;
|
||||
|
||||
#[proc_macro]
|
||||
pub fn component(input_tokens: TokenStream) -> TokenStream {
|
||||
let tokens = quote! {
|
||||
};
|
||||
tokens.into()
|
||||
}
|
||||
pub fn component(input_tokens: proc_macro::TokenStream) -> proc_macro::TokenStream {
|
||||
let input_tokens: TokenStream = input_tokens.into();
|
||||
let input_as_str = input_tokens.to_string();
|
||||
let tokens = flatten::flatten(input_tokens);
|
||||
|
||||
eprintln!("Tokens:");
|
||||
for token in tokens.iter() {
|
||||
eprintln!("- {:?}", token);
|
||||
}
|
||||
eprintln!();
|
||||
|
||||
let parser = ProgramParser::new();
|
||||
let result = parser.parse(tokens);
|
||||
match result {
|
||||
Ok(result) => eprintln!("success: {:?}", result),
|
||||
Err(err) => {
|
||||
use lalrpop_util::ParseError::*;
|
||||
match err {
|
||||
User { ref error } => print!("user error"),
|
||||
InvalidToken { ref location } => print!("Invalid token at {}", location),
|
||||
UnrecognizedEOF {
|
||||
ref location,
|
||||
ref expected,
|
||||
} => {
|
||||
print!("Unrecognized EOF found at {}", location);
|
||||
fmt_expected(expected)
|
||||
}
|
||||
UnrecognizedToken {
|
||||
token: (ref start, ref token, ref end),
|
||||
ref expected,
|
||||
} => {
|
||||
print!("Unrecognized token `{}` found at {}:{}", token, start, end);
|
||||
fmt_expected(expected)
|
||||
}
|
||||
ExtraToken {
|
||||
token: (ref start, ref token, ref end),
|
||||
} => print!("Extra token {} found at {}:{}", token, start, end),
|
||||
}
|
||||
}
|
||||
}
|
||||
panic!();
|
||||
|
||||
let result = quote! {};
|
||||
result.into()
|
||||
}
|
||||
|
||||
/// Format a list of expected tokens.
|
||||
fn fmt_expected(expected: &[String]) {
|
||||
if !expected.is_empty() {
|
||||
println!();
|
||||
for (i, e) in expected.iter().enumerate() {
|
||||
let sep = match i {
|
||||
0 => "Expected one of",
|
||||
_ if i < expected.len() - 1 => ",",
|
||||
// Last expected message to be written
|
||||
_ => " or",
|
||||
};
|
||||
print!("{} {}", sep, e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
188
enterprise-macros/src/old_parser.rs
Normal file
188
enterprise-macros/src/old_parser.rs
Normal file
|
@ -0,0 +1,188 @@
|
|||
use std::iter::Peekable;
|
||||
|
||||
use proc_macro2::{token_stream::IntoIter, Group, Ident, Literal, Punct, TokenStream, TokenTree};
|
||||
|
||||
type TokenIter = Peekable<IntoIter>;
|
||||
|
||||
#[derive(Debug, Error)]
|
||||
pub enum ParseError {
|
||||
#[error("Expected token type {0:?}, found {1:?}.")]
|
||||
ExpectedTokenType(TokenType, TokenType),
|
||||
|
||||
#[error("Expected idents {0:?}, found {1:?}")]
|
||||
ExpectedIdents(Vec<&'static str>, String),
|
||||
|
||||
#[error("Unexpected end of file")]
|
||||
UnexpectedEndOfFile,
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
pub enum TokenType {
|
||||
Group,
|
||||
Ident,
|
||||
Punct,
|
||||
Literal,
|
||||
}
|
||||
|
||||
impl TokenType {
|
||||
fn from_tree(token_tree: &TokenTree) -> Self {
|
||||
match token_tree {
|
||||
TokenTree::Group(_) => TokenType::Group,
|
||||
TokenTree::Ident(_) => TokenType::Ident,
|
||||
TokenTree::Punct(_) => TokenType::Punct,
|
||||
TokenTree::Literal(_) => TokenType::Literal,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
pub enum Toplevel {
|
||||
Use(UseStatement),
|
||||
Component(Component),
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct UseStatement;
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct Component {
|
||||
name: String,
|
||||
}
|
||||
|
||||
pub fn parse(tokens: TokenStream) -> Result<Vec<Toplevel>, ParseError> {
|
||||
// TODO: maybe don't need to cloen?
|
||||
let mut token_iter = tokens.clone().into_iter().peekable();
|
||||
|
||||
let mut toplevels = Vec::new();
|
||||
while let Some(toplevel) = expect_toplevel(&mut token_iter)? {
|
||||
toplevels.push(toplevel);
|
||||
}
|
||||
|
||||
Ok(toplevels)
|
||||
}
|
||||
|
||||
fn expect_toplevel(token_iter: &mut TokenIter) -> Result<Option<Toplevel>, ParseError> {
|
||||
let ident = consume_expect_ident(token_iter, Some(&["use", "component"]))?;
|
||||
let ident_string = ident.to_string();
|
||||
|
||||
match ident_string.as_ref() {
|
||||
"use" => Ok(Some(Toplevel::Use(UseStatement))),
|
||||
"component" => {
|
||||
let component = expect_component(token_iter)?;
|
||||
Ok(Some(Toplevel::Component(component)))
|
||||
}
|
||||
_ => Err(ParseError::ExpectedIdents(
|
||||
vec!["use", "component"],
|
||||
ident_string,
|
||||
)),
|
||||
}
|
||||
}
|
||||
|
||||
fn expect_component(token_iter: &mut TokenIter) -> Result<Component, ParseError> {
|
||||
let name_ident = expect_ident(token_iter, None)?;
|
||||
let name = name_ident.to_string();
|
||||
|
||||
expect_component_body(token_iter, name)
|
||||
}
|
||||
|
||||
fn expect_component_body(
|
||||
token_iter: &mut TokenIter,
|
||||
name: String,
|
||||
) -> Result<Component, ParseError> {
|
||||
expect_group(token_iter)?;
|
||||
Ok(Component { name })
|
||||
}
|
||||
|
||||
//////
|
||||
|
||||
fn optional<T, U>(
|
||||
token_iter: &mut TokenIter,
|
||||
arg: T,
|
||||
func: impl Fn(&mut TokenIter, T) -> Result<U, ParseError>,
|
||||
) {
|
||||
match func(token_iter, arg) {
|
||||
}
|
||||
}
|
||||
|
||||
macro_rules! expect_token_tree {
|
||||
($peek_fn_name:ident, $consume_fn_name:ident, $ty:ident) => {
|
||||
#[allow(dead_code)]
|
||||
fn $peek_fn_name<'a>(token_iter: &'a mut TokenIter) -> Result<&'a $ty, ParseError> {
|
||||
match token_iter.peek() {
|
||||
Some(TokenTree::$ty(value)) => Ok(value),
|
||||
Some(other_tree) => Err(ParseError::ExpectedTokenType(
|
||||
TokenType::Ident,
|
||||
TokenType::from_tree(&other_tree),
|
||||
)),
|
||||
None => Err(ParseError::UnexpectedEndOfFile),
|
||||
}
|
||||
}
|
||||
#[allow(dead_code)]
|
||||
fn $consume_fn_name<'a>(token_iter: &'a mut TokenIter) -> Result<$ty, ParseError> {
|
||||
match token_iter.next() {
|
||||
Some(TokenTree::$ty(value)) => Ok(value),
|
||||
Some(other_tree) => Err(ParseError::ExpectedTokenType(
|
||||
TokenType::Ident,
|
||||
TokenType::from_tree(&other_tree),
|
||||
)),
|
||||
None => Err(ParseError::UnexpectedEndOfFile),
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
expect_token_tree!(peek_expect_group, consume_expect_group, Group);
|
||||
expect_token_tree!(peek_expect_punct, consume_expect_punct, Punct);
|
||||
expect_token_tree!(peek_expect_literal, consume_expect_literal, Literal);
|
||||
|
||||
fn peek_expect_ident<'a>(
|
||||
token_iter: &'a mut TokenIter,
|
||||
possible: Option<&[&'static str]>,
|
||||
) -> Result<&'a Ident, ParseError> {
|
||||
match token_iter.peek() {
|
||||
Some(TokenTree::Ident(ident)) => {
|
||||
if let Some(possible) = possible {
|
||||
let ident_string = ident.to_string();
|
||||
for expected in possible {
|
||||
if *expected == ident_string.as_str() {
|
||||
return Ok(ident);
|
||||
}
|
||||
}
|
||||
Err(ParseError::ExpectedIdents(possible.into(), ident_string))
|
||||
} else {
|
||||
Ok(ident)
|
||||
}
|
||||
}
|
||||
Some(other_tree) => Err(ParseError::ExpectedTokenType(
|
||||
TokenType::Ident,
|
||||
TokenType::from_tree(&other_tree),
|
||||
)),
|
||||
None => Err(ParseError::UnexpectedEndOfFile),
|
||||
}
|
||||
}
|
||||
|
||||
fn consume_expect_ident<'a>(
|
||||
token_iter: &'a mut TokenIter,
|
||||
possible: Option<&[&'static str]>,
|
||||
) -> Result<Ident, ParseError> {
|
||||
match token_iter.next() {
|
||||
Some(TokenTree::Ident(ident)) => {
|
||||
if let Some(possible) = possible {
|
||||
let ident_string = ident.to_string();
|
||||
for expected in possible {
|
||||
if *expected == ident_string.as_str() {
|
||||
return Ok(ident);
|
||||
}
|
||||
}
|
||||
Err(ParseError::ExpectedIdents(possible.into(), ident_string))
|
||||
} else {
|
||||
Ok(ident)
|
||||
}
|
||||
}
|
||||
Some(other_tree) => Err(ParseError::ExpectedTokenType(
|
||||
TokenType::Ident,
|
||||
TokenType::from_tree(&other_tree),
|
||||
)),
|
||||
None => Err(ParseError::UnexpectedEndOfFile),
|
||||
}
|
||||
}
|
123
enterprise-macros/src/parser.lalrpop
Normal file
123
enterprise-macros/src/parser.lalrpop
Normal file
|
@ -0,0 +1,123 @@
|
|||
use std::iter::FromIterator;
|
||||
|
||||
use proc_macro2::{Ident, Punct, TokenTree, Delimiter, TokenStream, Group, Spacing, Literal};
|
||||
|
||||
use crate::{TokenType, Span};
|
||||
use crate::ast::*;
|
||||
|
||||
grammar;
|
||||
|
||||
pub Program: Vec<Toplevel> = Toplevel*;
|
||||
|
||||
pub Toplevel: Toplevel = {
|
||||
Component => Toplevel::Component(<>),
|
||||
Use => Toplevel::Use(<>),
|
||||
};
|
||||
|
||||
Use: Use = {
|
||||
"use" <path:Delim<Ident, (":" ":")>> ";" => Use(path.into_iter().map(|ident| ident.to_string()).collect()),
|
||||
};
|
||||
|
||||
Component: Component = {
|
||||
"component" <name:Ident> <body:Body<ComponentBody*>> => {
|
||||
Component {
|
||||
name: name.to_string(),
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
ComponentBody: ComponentBody = {
|
||||
"constructor" "(" ")" BraceGrouper => {
|
||||
ComponentBody::Constructor()
|
||||
},
|
||||
"view" BraceGrouper => {
|
||||
ComponentBody::View()
|
||||
},
|
||||
"fn" Ident "(" Delim<Arg, ","> ")" BraceGrouper => {
|
||||
ComponentBody::Fn()
|
||||
},
|
||||
};
|
||||
|
||||
// TODO: finish this
|
||||
Arg: () = {
|
||||
Punct Ident Ident => {},
|
||||
Ident ":" Ident => {},
|
||||
};
|
||||
|
||||
//
|
||||
|
||||
pub ArbitraryBlocks: Vec<TokenTree> = AnyToken*;
|
||||
|
||||
Grouper: TokenTree = {
|
||||
BraceGrouper => <>,
|
||||
"(" <b:AnyToken*> ")" => TokenTree::Group(Group::new(Delimiter::Parenthesis, TokenStream::from_iter(b.into_iter()))),
|
||||
"[" <b:AnyToken*> "]" => TokenTree::Group(Group::new(Delimiter::Bracket, TokenStream::from_iter(b.into_iter()))),
|
||||
};
|
||||
|
||||
BraceGrouper: TokenTree = {
|
||||
"{" <b:AnyToken*> "}" => TokenTree::Group(Group::new(Delimiter::Brace, TokenStream::from_iter(b.into_iter()))),
|
||||
};
|
||||
|
||||
AnyToken: TokenTree = {
|
||||
Grouper => <>,
|
||||
|
||||
"component" => TokenTree::Ident(Ident::new("component", <>.0)),
|
||||
"constructor" => TokenTree::Ident(Ident::new("constructor", <>.0)),
|
||||
"fn" => TokenTree::Ident(Ident::new("fn", <>.0)),
|
||||
"use" => TokenTree::Ident(Ident::new("use", <>.0)),
|
||||
"view" => TokenTree::Ident(Ident::new("view", <>.0)),
|
||||
|
||||
":" => TokenTree::Punct(Punct::new(':', Spacing::Alone)),
|
||||
";" => TokenTree::Punct(Punct::new(';', Spacing::Alone)),
|
||||
"," => TokenTree::Punct(Punct::new(',', Spacing::Alone)),
|
||||
|
||||
Ident => TokenTree::Ident(<>),
|
||||
Punct => TokenTree::Punct(<>),
|
||||
Literal => TokenTree::Literal(<>),
|
||||
};
|
||||
|
||||
Body<T>: T = {
|
||||
"{" <body:T> "}" => body,
|
||||
};
|
||||
|
||||
Delim<T, Sep>: Vec<T> = {
|
||||
<all:(T ((Sep T)+ Sep?)?)?> => {
|
||||
let mut vec = Vec::new();
|
||||
if let Some((initial, rest)) = all {
|
||||
vec.push(initial);
|
||||
if let Some((rest, _)) = rest {
|
||||
for (_, item) in rest {
|
||||
vec.push(item);
|
||||
}
|
||||
}
|
||||
}
|
||||
vec
|
||||
},
|
||||
};
|
||||
|
||||
extern {
|
||||
type Location = Span;
|
||||
type Error = ();
|
||||
|
||||
enum TokenType {
|
||||
"component" => TokenType::Component(<Span>),
|
||||
"constructor" => TokenType::Constructor(<Span>),
|
||||
"fn" => TokenType::Fn(<Span>),
|
||||
"use" => TokenType::Use(<Span>),
|
||||
"view" => TokenType::View(<Span>),
|
||||
|
||||
":" => TokenType::Punct(':', _),
|
||||
";" => TokenType::Punct(';', _),
|
||||
"," => TokenType::Punct(',', _),
|
||||
"{" => TokenType::Punct('{', _),
|
||||
"}" => TokenType::Punct('}', _),
|
||||
"(" => TokenType::Punct('(', _),
|
||||
")" => TokenType::Punct(')', _),
|
||||
"[" => TokenType::Punct('[', _),
|
||||
"]" => TokenType::Punct(']', _),
|
||||
|
||||
Punct => TokenType::Punct(_, <Punct>),
|
||||
Ident => TokenType::Ident(<Ident>),
|
||||
Literal => TokenType::Literal(<Literal>),
|
||||
}
|
||||
}
|
0
src/component.rs
Normal file
0
src/component.rs
Normal file
|
@ -0,0 +1 @@
|
|||
|
|
@ -1,3 +0,0 @@
|
|||
pub trait Widget<B> {
|
||||
|
||||
}
|
|
@ -4,6 +4,9 @@ version = "0.1.0"
|
|||
authors = ["Michael Zhang <iptq@protonmail.com>"]
|
||||
edition = "2018"
|
||||
|
||||
[build-dependencies]
|
||||
enterprise-compiler = { path = "../enterprise-compiler" }
|
||||
enterprise-macros = { path = "../enterprise-macros" }
|
||||
|
||||
[dependencies]
|
||||
enterprise = { path = ".." }
|
||||
enterprise-macros = { path = "../enterprise-macros" }
|
||||
enterprise = { path = ".." }
|
6
todomvc/build.rs
Normal file
6
todomvc/build.rs
Normal file
|
@ -0,0 +1,6 @@
|
|||
#[macro_use]
|
||||
extern crate enterprise_macros;
|
||||
|
||||
mod components;
|
||||
|
||||
fn main() {}
|
24
todomvc/components/mod.rs
Normal file
24
todomvc/components/mod.rs
Normal file
|
@ -0,0 +1,24 @@
|
|||
component! {
|
||||
use enterprise::event::ClickEvent;
|
||||
use enterprise::components::Button;
|
||||
|
||||
component Counter {
|
||||
constructor() {
|
||||
count: u32 = 0u32,
|
||||
}
|
||||
|
||||
view {
|
||||
<Button on:click={handleClick}>
|
||||
Clicked {count} {if count == 1 { "time" } else { "times" }}
|
||||
</Button>
|
||||
}
|
||||
|
||||
fn handleClick(&mut self, _: ClickEvent) {
|
||||
self.count += 1;
|
||||
}
|
||||
}
|
||||
|
||||
component Other {
|
||||
|
||||
}
|
||||
}
|
0
todomvc/src/Counter.en
Normal file
0
todomvc/src/Counter.en
Normal file
|
@ -1,28 +1,3 @@
|
|||
use enterprise_macros::component;
|
||||
|
||||
component! {
|
||||
data {
|
||||
|
||||
}
|
||||
|
||||
markup {
|
||||
<Header>
|
||||
<H1>Todos</H1>
|
||||
<TextBox
|
||||
/>
|
||||
</Header>
|
||||
|
||||
{#if items.length > 0}
|
||||
<Section class="main">
|
||||
<List>
|
||||
{#for item in items}
|
||||
{/for}
|
||||
</List>
|
||||
</Section>
|
||||
{/if}
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {
|
||||
println!("Hello, world!");
|
||||
}
|
||||
|
|
47
todomvc/src/yolo.rs
Normal file
47
todomvc/src/yolo.rs
Normal file
|
@ -0,0 +1,47 @@
|
|||
struct YourFuckingMap;
|
||||
|
||||
struct Options {
|
||||
shit_you_get_from_the_net: EnumA,
|
||||
other_shit: EnumB,
|
||||
number: f32,
|
||||
}
|
||||
|
||||
impl<B: Backend> Component<B> for YourFuckingMap {
|
||||
type Context = Options;
|
||||
|
||||
fn view(&self, context: Self::Context) -> Vec<B::Markup> {
|
||||
// in here
|
||||
let mut node = B::Markup::empty();
|
||||
if context.number > 0.5 {
|
||||
node += this;
|
||||
}
|
||||
|
||||
match context.shit_you_get_from_the_net {
|
||||
A => node += that,
|
||||
B => node += ehtis,
|
||||
}
|
||||
|
||||
[node]
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
///////
|
||||
|
||||
=> {
|
||||
let listeners = span.listeners();
|
||||
}
|
||||
|
||||
=>view(&self) -> B::Markup {
|
||||
let button = (...);
|
||||
|
||||
let mut data2 = Markup::empty();
|
||||
for row in ctx.data {
|
||||
match row {
|
||||
A => data2 += span.render(),
|
||||
B => data2
|
||||
}
|
||||
}
|
||||
|
||||
[button, data2]
|
||||
}
|
Loading…
Reference in a new issue