mirror of
https://github.com/Stremio/stremio-shell-ng.git
synced 2026-03-11 17:15:49 +00:00
Use parse_display instead of strum and heck
This commit is contained in:
parent
4de3b463a7
commit
4d05ec1a5d
3 changed files with 99 additions and 47 deletions
103
Cargo.lock
generated
103
Cargo.lock
generated
|
|
@ -2,6 +2,15 @@
|
||||||
# It is not intended for manual editing.
|
# It is not intended for manual editing.
|
||||||
version = 3
|
version = 3
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "aho-corasick"
|
||||||
|
version = "0.7.18"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f"
|
||||||
|
dependencies = [
|
||||||
|
"memchr",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "ansi_term"
|
name = "ansi_term"
|
||||||
version = "0.11.0"
|
version = "0.11.0"
|
||||||
|
|
@ -193,6 +202,12 @@ dependencies = [
|
||||||
"cfg-if",
|
"cfg-if",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "memchr"
|
||||||
|
version = "2.4.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "b16bd47d9e329435e309c58469fe0791c2d0d1ba96ec0954152a5ae2b04387dc"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "mpv"
|
name = "mpv"
|
||||||
version = "0.2.3"
|
version = "0.2.3"
|
||||||
|
|
@ -341,6 +356,32 @@ dependencies = [
|
||||||
"winapi",
|
"winapi",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "parse-display"
|
||||||
|
version = "0.5.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "8f17011e14e6b831ed3aeab847a62fd338aee88539fcc99f23ce5ba98feba328"
|
||||||
|
dependencies = [
|
||||||
|
"once_cell",
|
||||||
|
"parse-display-derive",
|
||||||
|
"regex",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "parse-display-derive"
|
||||||
|
version = "0.5.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "ad30302271e65d661910580baf25e874cd92c4595ddbed74d1ec9b2fdfaae64b"
|
||||||
|
dependencies = [
|
||||||
|
"once_cell",
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"regex",
|
||||||
|
"regex-syntax",
|
||||||
|
"structmeta",
|
||||||
|
"syn",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "pathdiff"
|
name = "pathdiff"
|
||||||
version = "0.2.0"
|
version = "0.2.0"
|
||||||
|
|
@ -453,6 +494,23 @@ dependencies = [
|
||||||
"rand_core 0.3.1",
|
"rand_core 0.3.1",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "regex"
|
||||||
|
version = "1.5.4"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "d07a8629359eb56f1e2fb1652bb04212c072a87ba68546a04065d525673ac461"
|
||||||
|
dependencies = [
|
||||||
|
"aho-corasick",
|
||||||
|
"memchr",
|
||||||
|
"regex-syntax",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "regex-syntax"
|
||||||
|
version = "0.6.25"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rustc-serialize"
|
name = "rustc-serialize"
|
||||||
version = "0.3.24"
|
version = "0.3.24"
|
||||||
|
|
@ -511,18 +569,16 @@ version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitflags",
|
"bitflags",
|
||||||
"embed-resource",
|
"embed-resource",
|
||||||
"heck",
|
|
||||||
"mpv",
|
"mpv",
|
||||||
"native-windows-derive",
|
"native-windows-derive",
|
||||||
"native-windows-gui",
|
"native-windows-gui",
|
||||||
"once_cell",
|
"once_cell",
|
||||||
"open",
|
"open",
|
||||||
|
"parse-display",
|
||||||
"serde",
|
"serde",
|
||||||
"serde_json",
|
"serde_json",
|
||||||
"serde_test",
|
"serde_test",
|
||||||
"structopt",
|
"structopt",
|
||||||
"strum",
|
|
||||||
"strum_macros",
|
|
||||||
"urlencoding",
|
"urlencoding",
|
||||||
"webview2",
|
"webview2",
|
||||||
"webview2-sys",
|
"webview2-sys",
|
||||||
|
|
@ -546,6 +602,29 @@ version = "0.8.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a"
|
checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "structmeta"
|
||||||
|
version = "0.1.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "b55b4052fd036e3d1fe74ea978426a3f87997ba803e7a8e69ff0cf99f35a720a"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"structmeta-derive",
|
||||||
|
"syn",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "structmeta-derive"
|
||||||
|
version = "0.1.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "3f55502dda4b5fd26b33f6810d7493b4f5d7859bca604bd07ff22a523cd257ee"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"syn",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "structopt"
|
name = "structopt"
|
||||||
version = "0.3.22"
|
version = "0.3.22"
|
||||||
|
|
@ -570,24 +649,6 @@ dependencies = [
|
||||||
"syn",
|
"syn",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "strum"
|
|
||||||
version = "0.21.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "aaf86bbcfd1fa9670b7a129f64fc0c9fcbbfe4f1bc4210e9e98fe71ffc12cde2"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "strum_macros"
|
|
||||||
version = "0.21.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "d06aaeeee809dbc59eb4556183dd927df67db1540de5be8d3ec0b6636358a5ec"
|
|
||||||
dependencies = [
|
|
||||||
"heck",
|
|
||||||
"proc-macro2",
|
|
||||||
"quote",
|
|
||||||
"syn",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "syn"
|
name = "syn"
|
||||||
version = "1.0.73"
|
version = "1.0.73"
|
||||||
|
|
|
||||||
|
|
@ -19,10 +19,9 @@ structopt = "0.3"
|
||||||
open = "1"
|
open = "1"
|
||||||
urlencoding = "2.1.0"
|
urlencoding = "2.1.0"
|
||||||
bitflags = "1.2.1"
|
bitflags = "1.2.1"
|
||||||
strum = "0.21"
|
|
||||||
strum_macros = "0.21"
|
|
||||||
heck = "0.3"
|
|
||||||
win32job = "1"
|
win32job = "1"
|
||||||
|
parse-display = "0.5.1"
|
||||||
|
|
||||||
[build-dependencies]
|
[build-dependencies]
|
||||||
embed-resource = "1.3"
|
embed-resource = "1.3"
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,7 @@
|
||||||
use core::convert::TryFrom;
|
use core::convert::TryFrom;
|
||||||
use heck::KebabCase;
|
use parse_display::{Display, FromStr};
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use std::fmt;
|
use std::fmt;
|
||||||
use std::str::FromStr;
|
|
||||||
use strum_macros::EnumString;
|
|
||||||
|
|
||||||
// Responses
|
// Responses
|
||||||
const JSON_RESPONSES: [&str; 3] = ["track-list", "video-params", "metadata"];
|
const JSON_RESPONSES: [&str; 3] = ["track-list", "video-params", "metadata"];
|
||||||
|
|
@ -105,40 +103,34 @@ have any arguments. For example this are the commands we support:
|
||||||
*/
|
*/
|
||||||
macro_rules! stringable {
|
macro_rules! stringable {
|
||||||
($t:ident) => {
|
($t:ident) => {
|
||||||
impl fmt::Display for $t {
|
|
||||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
|
||||||
write!(f, "{}", format!("{:?}", self).to_kebab_case())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
impl From<$t> for String {
|
impl From<$t> for String {
|
||||||
fn from(s: $t) -> Self {
|
fn from(s: $t) -> Self {
|
||||||
s.to_string()
|
s.to_string()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
impl TryFrom<String> for $t {
|
impl TryFrom<String> for $t {
|
||||||
type Error = strum::ParseError;
|
type Error = parse_display::ParseError;
|
||||||
fn try_from(s: String) -> Result<Self, Self::Error> {
|
fn try_from(s: String) -> Result<Self, Self::Error> {
|
||||||
Self::from_str(s.as_str())
|
s.parse()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
#[allow(clippy::enum_variant_names)]
|
#[allow(clippy::enum_variant_names)]
|
||||||
#[derive(Serialize, Deserialize, Debug, Clone, EnumString, PartialEq)]
|
#[derive(Display, FromStr, Serialize, Deserialize, Debug, Clone, PartialEq)]
|
||||||
#[serde(try_from = "String", into = "String")]
|
#[serde(try_from = "String", into = "String")]
|
||||||
#[strum(serialize_all = "kebab-case")]
|
#[display(style = "kebab-case")]
|
||||||
pub enum InMsgFn {
|
pub enum InMsgFn {
|
||||||
MpvSetProp,
|
MpvSetProp,
|
||||||
MpvCommand,
|
MpvCommand,
|
||||||
MpvObserveProp,
|
MpvObserveProp,
|
||||||
}
|
}
|
||||||
stringable!(InMsgFn);
|
stringable!(InMsgFn);
|
||||||
|
|
||||||
// Bool
|
// Bool
|
||||||
#[derive(Serialize, Deserialize, Debug, Clone, EnumString, PartialEq)]
|
#[derive(Display, FromStr, Serialize, Deserialize, Debug, Clone, PartialEq)]
|
||||||
#[serde(try_from = "String", into = "String")]
|
#[serde(try_from = "String", into = "String")]
|
||||||
#[strum(serialize_all = "kebab-case")]
|
#[display(style = "kebab-case")]
|
||||||
pub enum BoolProp {
|
pub enum BoolProp {
|
||||||
Pause,
|
Pause,
|
||||||
PausedForCache,
|
PausedForCache,
|
||||||
|
|
@ -147,9 +139,9 @@ pub enum BoolProp {
|
||||||
}
|
}
|
||||||
stringable!(BoolProp);
|
stringable!(BoolProp);
|
||||||
// Int
|
// Int
|
||||||
#[derive(Serialize, Deserialize, Debug, Clone, EnumString, PartialEq)]
|
#[derive(Display, FromStr, Serialize, Deserialize, Debug, Clone, PartialEq)]
|
||||||
#[serde(try_from = "String", into = "String")]
|
#[serde(try_from = "String", into = "String")]
|
||||||
#[strum(serialize_all = "kebab-case")]
|
#[display(style = "kebab-case")]
|
||||||
pub enum IntProp {
|
pub enum IntProp {
|
||||||
Aid,
|
Aid,
|
||||||
Vid,
|
Vid,
|
||||||
|
|
@ -157,9 +149,9 @@ pub enum IntProp {
|
||||||
}
|
}
|
||||||
stringable!(IntProp);
|
stringable!(IntProp);
|
||||||
// Fp
|
// Fp
|
||||||
#[derive(Serialize, Deserialize, Debug, Clone, EnumString, PartialEq)]
|
#[derive(Display, FromStr, Serialize, Deserialize, Debug, Clone, PartialEq)]
|
||||||
#[serde(try_from = "String", into = "String")]
|
#[serde(try_from = "String", into = "String")]
|
||||||
#[strum(serialize_all = "kebab-case")]
|
#[display(style = "kebab-case")]
|
||||||
pub enum FpProp {
|
pub enum FpProp {
|
||||||
TimePos,
|
TimePos,
|
||||||
Volume,
|
Volume,
|
||||||
|
|
@ -171,9 +163,9 @@ pub enum FpProp {
|
||||||
}
|
}
|
||||||
stringable!(FpProp);
|
stringable!(FpProp);
|
||||||
// Str
|
// Str
|
||||||
#[derive(Serialize, Deserialize, Debug, Clone, EnumString, PartialEq)]
|
#[derive(Display, FromStr, Serialize, Deserialize, Debug, Clone, PartialEq)]
|
||||||
#[serde(try_from = "String", into = "String")]
|
#[serde(try_from = "String", into = "String")]
|
||||||
#[strum(serialize_all = "kebab-case")]
|
#[display(style = "kebab-case")]
|
||||||
pub enum StrProp {
|
pub enum StrProp {
|
||||||
FfmpegVersion,
|
FfmpegVersion,
|
||||||
Hwdec,
|
Hwdec,
|
||||||
|
|
@ -221,9 +213,9 @@ pub enum PropVal {
|
||||||
Num(f64),
|
Num(f64),
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug, Clone, EnumString, PartialEq)]
|
#[derive(Display, FromStr, Serialize, Deserialize, Debug, Clone, PartialEq)]
|
||||||
#[serde(try_from = "String", into = "String")]
|
#[serde(try_from = "String", into = "String")]
|
||||||
#[strum(serialize_all = "kebab-case")]
|
#[display(style = "kebab-case")]
|
||||||
#[serde(untagged)]
|
#[serde(untagged)]
|
||||||
pub enum MpvCmd {
|
pub enum MpvCmd {
|
||||||
Loadfile,
|
Loadfile,
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue