move all of cp437 feature code into one unit
This commit is contained in:
parent
62a9969cb5
commit
319ef4572a
3 changed files with 38 additions and 49 deletions
33
src/cp437.rs
33
src/cp437.rs
|
|
@ -1,3 +1,4 @@
|
|||
use crate::{CharGrid, Cp437Grid};
|
||||
use std::collections::HashMap;
|
||||
|
||||
/// Contains functions to convert between UTF-8 and Codepage 437.
|
||||
|
|
@ -71,6 +72,30 @@ impl Cp437Converter {
|
|||
}
|
||||
}
|
||||
|
||||
impl From<&Cp437Grid> for CharGrid {
|
||||
fn from(value: &Cp437Grid) -> Self {
|
||||
value.map(Cp437Converter::cp437_to_char)
|
||||
}
|
||||
}
|
||||
|
||||
impl From<Cp437Grid> for CharGrid {
|
||||
fn from(value: Cp437Grid) -> Self {
|
||||
Self::from(&value)
|
||||
}
|
||||
}
|
||||
|
||||
impl From<&CharGrid> for Cp437Grid {
|
||||
fn from(value: &CharGrid) -> Self {
|
||||
value.map(Cp437Converter::char_to_cp437)
|
||||
}
|
||||
}
|
||||
|
||||
impl From<CharGrid> for Cp437Grid {
|
||||
fn from(value: CharGrid) -> Self {
|
||||
Self::from(&value)
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests_feature_cp437 {
|
||||
use super::*;
|
||||
|
|
@ -112,4 +137,12 @@ mod tests_feature_cp437 {
|
|||
'?'
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn round_trip_cp437() {
|
||||
let utf8 = CharGrid::load(2, 2, &['Ä', 'x', '\n', '$']);
|
||||
let cp437 = Cp437Grid::from(utf8.clone());
|
||||
let actual = CharGrid::from(cp437);
|
||||
assert_eq!(actual, utf8);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,3 +1,5 @@
|
|||
use crate::Grid;
|
||||
|
||||
/// A grid containing codepage 437 characters.
|
||||
///
|
||||
/// The encoding is currently not enforced.
|
||||
|
|
@ -76,39 +78,6 @@ impl Cp437Grid {
|
|||
}
|
||||
}
|
||||
|
||||
use crate::Grid;
|
||||
#[allow(unused)] // depends on features
|
||||
pub use feature_cp437::*;
|
||||
|
||||
#[cfg(feature = "cp437")]
|
||||
mod feature_cp437 {
|
||||
use super::*;
|
||||
use crate::{CharGrid, Cp437Converter};
|
||||
|
||||
impl From<&Cp437Grid> for CharGrid {
|
||||
fn from(value: &Cp437Grid) -> Self {
|
||||
value.map(Cp437Converter::cp437_to_char)
|
||||
}
|
||||
}
|
||||
|
||||
impl From<Cp437Grid> for CharGrid {
|
||||
fn from(value: Cp437Grid) -> Self {
|
||||
Self::from(&value)
|
||||
}
|
||||
}
|
||||
|
||||
impl From<&CharGrid> for Cp437Grid {
|
||||
fn from(value: &CharGrid) -> Self {
|
||||
value.map(Cp437Converter::char_to_cp437)
|
||||
}
|
||||
}
|
||||
|
||||
impl From<CharGrid> for Cp437Grid {
|
||||
fn from(value: CharGrid) -> Self {
|
||||
Self::from(&value)
|
||||
}
|
||||
}
|
||||
}
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
|
@ -146,18 +115,3 @@ mod tests {
|
|||
);
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
#[cfg(feature = "cp437")]
|
||||
mod tests_feature_cp437 {
|
||||
use super::*;
|
||||
use crate::CharGrid;
|
||||
|
||||
#[test]
|
||||
fn round_trip_cp437() {
|
||||
let utf8 = CharGrid::load(2, 2, &['Ä', 'x', '\n', '$']);
|
||||
let cp437 = Cp437Grid::from(utf8.clone());
|
||||
let actual = CharGrid::from(cp437);
|
||||
assert_eq!(actual, utf8);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -65,7 +65,6 @@ pub use crate::command::{Command, Offset};
|
|||
pub use crate::compression_code::CompressionCode;
|
||||
pub use crate::connection::Connection;
|
||||
pub use crate::constants::*;
|
||||
pub use crate::cp437::Cp437Converter;
|
||||
pub use crate::cp437_grid::Cp437Grid;
|
||||
pub use crate::data_ref::DataRef;
|
||||
pub use crate::grid::Grid;
|
||||
|
|
@ -97,6 +96,9 @@ mod value_grid;
|
|||
#[cfg(feature = "cp437")]
|
||||
mod cp437;
|
||||
|
||||
#[cfg(feature = "cp437")]
|
||||
pub use crate::cp437::Cp437Converter;
|
||||
|
||||
// include README.md in doctest
|
||||
#[doc = include_str!("../README.md")]
|
||||
#[cfg(doctest)]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue