Fix ci errors

This commit is contained in:
Lutetium-Vanadium 2021-07-08 18:37:02 +05:30
parent 9f84b7ff78
commit de232c7404
5 changed files with 64 additions and 18 deletions

View File

@ -39,17 +39,6 @@ jobs:
os: macOS-latest
rust: stable
# latest rust stable :: windows + gnu
- build: win-gnu
os: windows-latest
rust: stable-x86_64-gnu
# latest rust stable :: windows + msvc
- build: win-msvc
os: windows-latest
rust: stable
steps:
# checkout
- name: checkout_repository

View File

@ -25,7 +25,6 @@ insta = { version = "1.7.1", default-features = false }
rand = "0.8"
rand_chacha = "0.3"
csscolorparser = "0.5" # examples/input.rs
regex = "1.5" # examples/prompt_module.rs
fuzzy-matcher = "0.3" # examples/file.rs

View File

@ -1,7 +1,56 @@
use csscolorparser::parse as parse_col;
use discourse::plugin::ui::style::Stylize;
use discourse::Question;
fn map_err<E>(_: E) {}
fn parse_col(s: &str) -> Result<(u8, u8, u8), ()> {
if !s.is_ascii() {
return Err(());
}
let s = s.trim();
if s.starts_with('#') {
let (r, g, b, mult) = if s.len() == 4 {
(1..2, 2..3, 3..4, 17)
} else if s.len() == 7 {
(1..3, 3..5, 5..7, 1)
} else {
return Err(());
};
Ok((
mult * u8::from_str_radix(&s[r], 16).map_err(map_err)?,
mult * u8::from_str_radix(&s[g], 16).map_err(map_err)?,
mult * u8::from_str_radix(&s[b], 16).map_err(map_err)?,
))
} else if s.starts_with("rgb(") && s.ends_with(')') {
let mut s = &s[4..(s.len() - 1)];
let r;
let g;
if let Some(pos) = s.find(',') {
r = s[..pos].trim().parse().map_err(map_err)?;
s = &s[(pos + 1)..];
} else {
return Err(());
}
if let Some(pos) = s.find(',') {
g = s[..pos].trim().parse().map_err(map_err)?;
s = &s[(pos + 1)..];
} else {
return Err(());
}
let b = s.trim().parse().map_err(map_err)?;
Ok((r, g, b))
} else {
Err(())
}
}
fn main() {
let questions = vec![
Question::input("first_name")
@ -18,7 +67,7 @@ fn main() {
Err(_) => Err("Please provide a valid css colour".into()),
})
.transform(|ans, _, backend| {
let (r, g, b, _) = parse_col(ans).unwrap().rgba_u8();
let (r, g, b) = parse_col(ans).unwrap();
backend.write_styled(&ans.rgb(r, g, b))?;
writeln!(backend)

View File

@ -139,7 +139,7 @@ impl Prompt for InputPrompt<'_, '_> {
let mut ans = self
.input
.finish()
.unwrap_or_else(|| prompt.into_hint().unwrap());
.unwrap_or_else(|| prompt.into_hint().unwrap_or_else(String::new));
if let Filter::Sync(filter) = self.input_opts.filter {
ans = filter(ans, self.answers);

View File

@ -234,7 +234,10 @@ impl<'a> MultiSelectBuilder<'a> {
}
pub fn default_separator(mut self) -> Self {
self.multi_select.choices.choices.push(Choice::DefaultSeparator);
self.multi_select
.choices
.choices
.push(Choice::DefaultSeparator);
self.multi_select.selected.push(false);
self
}
@ -295,7 +298,10 @@ impl<'a> MultiSelectBuilder<'a> {
self.multi_select.selected.push(false);
}
Choice::DefaultSeparator => {
self.multi_select.choices.choices.push(Choice::DefaultSeparator);
self.multi_select
.choices
.choices
.push(Choice::DefaultSeparator);
self.multi_select.selected.push(false);
}
}
@ -319,7 +325,10 @@ impl<'a> MultiSelectBuilder<'a> {
crate::impl_transform_builder!([ListItem]; multi_select);
pub fn build(self) -> super::Question<'a> {
super::Question::new(self.opts, super::QuestionKind::MultiSelect(self.multi_select))
super::Question::new(
self.opts,
super::QuestionKind::MultiSelect(self.multi_select),
)
}
}