summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJovansonlee Cesar <ivanceras@gmail.com>2022-09-23 18:13:33 +0800
committerJovansonlee Cesar <ivanceras@gmail.com>2022-09-23 18:13:33 +0800
commit417bdf4534a283b902168b90e76da559105653ec (patch)
tree2dbf7578d7ab5a5021b78217d0a3d2fdbd0d79b5
parent1a66cd5d7bdbf83371bcfd2f7ed61b18bdc88f02 (diff)
fix: clippy warnings
-rw-r--r--packages/svgbob/src/buffer/cell_buffer/span.rs2
-rw-r--r--packages/svgbob/src/buffer/fragment_buffer.rs13
-rw-r--r--packages/svgbob/src/buffer/fragment_buffer/fragment.rs32
-rw-r--r--packages/svgbob/src/buffer/property_buffer.rs6
-rw-r--r--packages/svgbob/src/buffer/property_buffer/property.rs6
-rw-r--r--packages/svgbob/src/buffer/string_buffer.rs9
-rw-r--r--packages/svgbob/src/map/ascii_map.rs1
-rw-r--r--packages/svgbob/src/map/circle_map.rs8
-rw-r--r--packages/svgbob/src/util.rs29
-rw-r--r--packages/svgbob_cli/src/main.rs49
10 files changed, 68 insertions, 87 deletions
diff --git a/packages/svgbob/src/buffer/cell_buffer/span.rs b/packages/svgbob/src/buffer/cell_buffer/span.rs
index 109a9fa..ec04ebd 100644
--- a/packages/svgbob/src/buffer/cell_buffer/span.rs
+++ b/packages/svgbob/src/buffer/cell_buffer/span.rs
@@ -304,7 +304,7 @@ impl<'p> From<Span> for PropertyBuffer<'p> {
impl Span {
fn into_fragment_buffer(self) -> FragmentBuffer {
let pb: PropertyBuffer = self.clone().into();
- let mut fb: FragmentBuffer = pb.into_fragment_buffer();
+ let mut fb: FragmentBuffer = pb.clone().into_fragment_buffer();
for (cell, ch) in self.iter() {
if pb.as_ref().get(cell).is_none() {
if let Some(fragments) = UNICODE_FRAGMENTS.get(ch) {
diff --git a/packages/svgbob/src/buffer/fragment_buffer.rs b/packages/svgbob/src/buffer/fragment_buffer.rs
index 0a308a9..b945d26 100644
--- a/packages/svgbob/src/buffer/fragment_buffer.rs
+++ b/packages/svgbob/src/buffer/fragment_buffer.rs
@@ -7,6 +7,7 @@ pub use fragment::Fragment;
pub use fragment_span::FragmentSpan;
pub use fragment_tree::FragmentTree;
use itertools::Itertools;
+use std::fmt::Write;
use std::{
collections::BTreeMap,
ops::{Deref, DerefMut},
@@ -39,7 +40,7 @@ mod fragment_tree;
/// 7├─┼─┼─┼─┤ │ │ │ │ │
/// 8└─┴─┴─┴─┘ U└─┴─┴─┴─┘Y
/// ``` V W X
-#[derive(Debug)]
+#[derive(Debug, Default)]
pub struct FragmentBuffer(BTreeMap<Cell, (char, Vec<Fragment>)>);
impl Deref for FragmentBuffer {
@@ -58,7 +59,7 @@ impl DerefMut for FragmentBuffer {
impl FragmentBuffer {
pub fn new() -> Self {
- FragmentBuffer(BTreeMap::new())
+ FragmentBuffer::default()
}
/// dump for debugging purpose only
@@ -66,9 +67,9 @@ impl FragmentBuffer {
pub fn dump(&self) -> String {
let mut buff = String::new();
for (cell, (_ch, shapes)) in self.iter() {
- buff.push_str(&format!("\ncell: {} ", cell));
+ write!(buff, "\ncell: {} ", cell);
for shape in shapes {
- buff.push_str(&format!("\n {}", shape));
+ write!(buff, "\n {}", shape);
}
}
buff
@@ -134,13 +135,13 @@ impl FragmentBuffer {
self.sort_fragments_in_cell(cell);
}
- pub fn merge_fragment_spans(&self) -> Vec<FragmentSpan> {
+ pub fn merge_fragment_spans(self) -> Vec<FragmentSpan> {
let fragment_spans = self.into_fragment_spans();
FragmentSpan::merge_recursive(fragment_spans)
}
/// create a merged of fragments while preserving their cells
- fn into_fragment_spans(&self) -> Vec<FragmentSpan> {
+ fn into_fragment_spans(self) -> Vec<FragmentSpan> {
let mut fragment_spans: Vec<FragmentSpan> = vec![];
for (cell, (ch, fragments)) in self.iter() {
for frag in fragments.iter() {
diff --git a/packages/svgbob/src/buffer/fragment_buffer/fragment.rs b/packages/svgbob/src/buffer/fragment_buffer/fragment.rs
index c1c2393..3cae197 100644
--- a/packages/svgbob/src/buffer/fragment_buffer/fragment.rs
+++ b/packages/svgbob/src/buffer/fragment_buffer/fragment.rs
@@ -377,31 +377,19 @@ impl Fragment {
}
pub fn is_circle(&self) -> bool {
- match self {
- Fragment::Circle(_) => true,
- _ => false,
- }
+ matches!(self, Fragment::Circle(_))
}
pub fn is_rect(&self) -> bool {
- match self {
- Fragment::Rect(_) => true,
- _ => false,
- }
+ matches!(self, Fragment::Rect(_))
}
pub fn is_text(&self) -> bool {
- match self {
- Fragment::Text(_) => true,
- _ => false,
- }
+ matches!(self, Fragment::Text(_))
}
pub fn is_cell_text(&self) -> bool {
- match self {
- Fragment::CellText(_) => true,
- _ => false,
- }
+ matches!(self, Fragment::CellText(_))
}
pub fn is_broken(&self) -> bool {
@@ -478,9 +466,9 @@ impl Bounds for Fragment {
}
}
-impl<MSG> Into<Node<MSG>> for Fragment {
- fn into(self) -> Node<MSG> {
- match self {
+impl<MSG> From<Fragment> for Node<MSG> {
+ fn from(fragment: Fragment) -> Node<MSG> {
+ match fragment {
Fragment::Line(line) => line.into(),
Fragment::MarkerLine(marker_line) => marker_line.into(),
Fragment::Circle(circle) => circle.into(),
@@ -608,9 +596,9 @@ impl From<Text> for Fragment {
}
}
-impl Into<Fragment> for CellText {
- fn into(self) -> Fragment {
- Fragment::CellText(self)
+impl From<CellText> for Fragment {
+ fn from(ct: CellText) -> Fragment {
+ Fragment::CellText(ct)
}
}
diff --git a/packages/svgbob/src/buffer/property_buffer.rs b/packages/svgbob/src/buffer/property_buffer.rs
index 155ceeb..e9f24ad 100644
--- a/packages/svgbob/src/buffer/property_buffer.rs
+++ b/packages/svgbob/src/buffer/property_buffer.rs
@@ -13,11 +13,12 @@ mod property;
/// This will be used in the first phase of converting ascii diagrams into fragment buffer
/// The properties are generated once and will be repeatedly used for the second phase
/// where testing the neighboring charaters to determine the fragment to be drawn for that cell.
+#[derive(Default, Clone)]
pub struct PropertyBuffer<'p>(HashMap<Cell, &'p Property>);
impl<'p> PropertyBuffer<'p> {
pub fn new() -> Self {
- PropertyBuffer(HashMap::new())
+ PropertyBuffer::default()
}
/// get the appropriate character for this cell
@@ -71,6 +72,7 @@ impl<'p> PropertyBuffer<'p> {
/// if the fragments match to the return fragments
/// of the property behavior, then it is a match
+ #[allow(clippy::too_many_arguments)]
pub fn match_char_with_surrounding_properties(
fragments: &Vec<Fragment>,
top_left: &Property,
@@ -135,7 +137,7 @@ impl<'p> AsMut<HashMap<Cell, &'p Property>> for PropertyBuffer<'p> {
/// convert property buffer to fragment buffer
impl<'p> PropertyBuffer<'p> {
- pub(crate) fn into_fragment_buffer(&self) -> FragmentBuffer {
+ pub(crate) fn into_fragment_buffer(self) -> FragmentBuffer {
let mut fb = FragmentBuffer::new();
for (cell, property) in self.as_ref() {
let empty = &&Property::empty();
diff --git a/packages/svgbob/src/buffer/property_buffer/property.rs b/packages/svgbob/src/buffer/property_buffer/property.rs
index 45d957a..f7fb355 100644
--- a/packages/svgbob/src/buffer/property_buffer/property.rs
+++ b/packages/svgbob/src/buffer/property_buffer/property.rs
@@ -1,3 +1,4 @@
+#![allow(clippy::type_complexity)]
use self::Signal::Strong;
use crate::{
map::{ASCII_PROPERTIES, UNICODE_PROPERTIES},
@@ -168,14 +169,14 @@ impl Property {
self.ch.is_alphabetic() && self.ch != '_' // since space is used when a property is derived from strong
}
- pub fn match_signature(&self, fragments: &Vec<Fragment>) -> bool {
+ pub fn match_signature(&self, fragments: &[Fragment]) -> bool {
let signature_fragments = self.signature_fragments_with_signal(Strong);
signature_fragments == *fragments
}
/// evaluate this property together with the supplied surrounding
/// to see if the resulting fragments is equal to the supplied fragments
- pub(crate) fn match_property(&self, _fragments: &Vec<Fragment>) -> bool {
+ pub(crate) fn match_property(&self, _fragments: &[Fragment]) -> bool {
false
}
@@ -224,6 +225,7 @@ impl Property {
}
/// the fragments of this property when the surrounding properties is supplied
+ #[allow(clippy::too_many_arguments)]
pub(crate) fn fragments(
&self,
top_left: &Property,
diff --git a/packages/svgbob/src/buffer/string_buffer.rs b/packages/svgbob/src/buffer/string_buffer.rs
index 9350a90..d707096 100644
--- a/packages/svgbob/src/buffer/string_buffer.rs
+++ b/packages/svgbob/src/buffer/string_buffer.rs
@@ -6,6 +6,7 @@ use unicode_width::UnicodeWidthChar;
/// each cell can be assigned with a string
/// taking into account utf8 code which can not be char
/// including but not limited to multi-width chars
+#[derive(Default)]
pub struct StringBuffer(Vec<Vec<char>>);
impl Deref for StringBuffer {
@@ -22,15 +23,9 @@ impl DerefMut for StringBuffer {
}
}
-impl Default for StringBuffer {
- fn default() -> Self {
- Self(vec![])
- }
-}
-
impl StringBuffer {
pub fn new() -> Self {
- StringBuffer(vec![])
+ StringBuffer::default()
}
/// add rows to this buffer
diff --git a/packages/svgbob/src/map/ascii_map.rs b/packages/svgbob/src/map/ascii_map.rs
index 76da352..d2c4901 100644
--- a/packages/svgbob/src/map/ascii_map.rs
+++ b/packages/svgbob/src/map/ascii_map.rs
@@ -1,3 +1,4 @@
+#![allow(clippy::type_complexity)]
use crate::{
buffer::{
fragment::PolygonTag::{
diff --git a/packages/svgbob/src/map/circle_map.rs b/packages/svgbob/src/map/circle_map.rs
index 3266e9b..27190ee 100644
--- a/packages/svgbob/src/map/circle_map.rs
+++ b/packages/svgbob/src/map/circle_map.rs
@@ -719,7 +719,7 @@ lazy_static! {
}
-#[derive(Default, Hash, PartialEq, PartialOrd, Eq)]
+#[derive(Default, Hash, PartialEq, Eq)]
pub struct DiameterArc {
diameter: i32,
arc: usize,
@@ -732,6 +732,12 @@ impl Ord for DiameterArc {
}
}
+impl PartialOrd for DiameterArc {
+ fn partial_cmp(&self, other: &Self) -> Option<std::cmp::Ordering> {
+ Some(self.cmp(other))
+ }
+}
+
fn circle_art_to_group(art: &str) -> Vec<Contacts> {
let span1 = circle_art_to_span(art);
span1.get_contacts()
diff --git a/packages/svgbob/src/util.rs b/packages/svgbob/src/util.rs
index db63681..4e1cca5 100644
--- a/packages/svgbob/src/util.rs
+++ b/packages/svgbob/src/util.rs
@@ -113,25 +113,18 @@ pub mod parser {
Ok((first_item, first_pos)) => {
items.push(first_item);
pos = first_pos;
- loop {
- match (separator.method)(input, pos) {
- Ok((_, sep_pos)) => {
- match (parser.method)(input, sep_pos) {
- Ok((more_item, more_pos)) => {
- items.push(more_item);
- pos = more_pos;
- }
- Err(e) => {
- // return early when there is an
- // error matching the succeeding
- // items
- return Err(e);
- }
- }
+ while let Ok((_, sep_pos)) = (separator.method)(input, pos)
+ {
+ match (parser.method)(input, sep_pos) {
+ Ok((more_item, more_pos)) => {
+ items.push(more_item);
+ pos = more_pos;
}
- Err(_e) => {
- // the separator does not match, just break
- break;
+ Err(e) => {
+ // return early when there is an
+ // error matching the succeeding
+ // items
+ return Err(e);
}
}
}
diff --git a/packages/svgbob_cli/src/main.rs b/packages/svgbob_cli/src/main.rs
index 3659354..15a0bb9 100644
--- a/packages/svgbob_cli/src/main.rs
+++ b/packages/svgbob_cli/src/main.rs
@@ -77,11 +77,7 @@ fn main() {
let mut bob = String::new();
if args.is_present("inline") {
- bob = args
- .value_of("input")
- .unwrap()
- .replace("\\n", "\n")
- ;
+ bob = args.value_of("input").unwrap().replace("\\n", "\n");
} else if let Some(file) = args.value_of("input") {
match File::open(file) {
Ok(mut f) => {
@@ -127,10 +123,9 @@ fn main() {
settings.stroke_width = stroke_width;
}
- let scale : Option<f32> = parse_value_of(&args, "scale");
- match scale {
- Some(s) => { settings.scale *= s; },
- _ => {}
+ let scale: Option<f32> = parse_value_of(&args, "scale");
+ if let Some(s) = scale {
+ settings.scale *= s;
}
let svg = svgbob::to_svg_with_settings(&*bob, &settings);
@@ -157,23 +152,21 @@ fn parse_value_of<T: FromStr>(args: &ArgMatches, arg_name: &str) -> Option<T>
where
<T as std::str::FromStr>::Err: std::fmt::Display,
{
- return args
- .value_of(arg_name)
- .map(|arg| match arg.parse::<T>() {
- Ok(a) => a,
- Err(e) => {
- use std::io::Write;
+ return args.value_of(arg_name).map(|arg| match arg.parse::<T>() {
+ Ok(a) => a,
+ Err(e) => {
+ use std::io::Write;
- writeln!(
- &mut std::io::stderr(),
- "Illegal value for argument {}: {}",
- arg_name,
- e
- )
- .unwrap();
- exit(1);
- }
- });
+ writeln!(
+ &mut std::io::stderr(),
+ "Illegal value for argument {}: {}",
+ arg_name,
+ e
+ )
+ .unwrap();
+ exit(1);
+ }
+ });
}
// Batch convert files to svg
@@ -184,12 +177,12 @@ fn build(args: &ArgMatches) -> Result<(), Box<dyn Error>> {
let input_path = Path::new(files_pattern);
let ext = input_path
.extension()
- .unwrap_or("bob".as_ref())
+ .unwrap_or_else(|| "bob".as_ref())
.to_str()
.unwrap();
let input_dir = if input_path.is_dir() {
- input_path.clone()
+ input_path
} else {
input_path.parent().unwrap()
};
@@ -218,7 +211,7 @@ fn build(args: &ArgMatches) -> Result<(), Box<dyn Error>> {
if tmp_path.is_file() {
let tmp_ext = tmp_path
.extension()
- .unwrap_or("".as_ref())
+ .unwrap_or_else(|| "".as_ref())
.to_str()
.unwrap();
if tmp_ext == ext {