make text_encoding available to all of libpijul

[?]
Dec 18, 2020, 9:17 AM
W4NSLQNGQVQBB4BEXLFW5OTCBD5XQ4E2BGH3WIFGKSJBCODSUIGQC

Dependencies

  • [2] NYOF5766 track file encoding in the record, including change text for file adds
  • [3] 6HNRL5RT detect non-utf8 text files
  • [4] VO5OQW4W Removing anyhow in libpijul
  • [5] 246V5TYI decode existing files
  • [6] SXEYMYF7 Fixing the bad changes in history (unfortunately, by rebooting).

Change contents

  • edit in libpijul/src/working_copy/mod.rs at line 1
    [3.198172][2.0:15]()
    use std::fmt;
  • edit in libpijul/src/working_copy/mod.rs at line 2
    [3.33][2.16:66]()
    use serde::{de::Visitor, Deserialize, Serialize};
  • replacement in libpijul/src/working_copy/mod.rs at line 3
    [3.64][3.198228:198264](),[3.198228][3.198228:198264]()
    use crate::pristine::InodeMetadata;
    [3.64]
    [3.198264]
    use crate::{pristine::InodeMetadata, text_encoding::Encoding};
  • edit in libpijul/src/working_copy/mod.rs at line 67
    [2.609][2.609:617](),[2.617][3.998:999](),[3.998][3.998:999](),[3.999][2.618:938]()
    }
    }
    #[derive(Debug, PartialEq, Eq)]
    pub struct Encoding(&'static encoding_rs::Encoding);
    impl Encoding {
    pub(crate) fn for_label(label: &str) -> Encoding {
    Encoding(encoding_rs::Encoding::for_label_no_replacement(label.as_bytes()).unwrap())
    }
    pub(crate) fn label(&self) -> &str {
    self.0.name()
  • edit in libpijul/src/working_copy/mod.rs at line 69
    [2.946][2.946:2007](),[2.2007][3.1014:1020](),[3.1014][3.1014:1020](),[3.1020][3.199207:199209](),[3.2100][3.199207:199209](),[3.199207][3.199207:199209]()
    impl Clone for Encoding {
    fn clone(&self) -> Self {
    Encoding(self.0)
    }
    }
    impl Serialize for Encoding {
    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
    where
    S: serde::Serializer,
    {
    serializer.serialize_str(self.label())
    }
    }
    struct EncodingVisitor;
    impl<'de> Deserialize<'de> for Encoding {
    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
    where
    D: serde::Deserializer<'de>,
    {
    impl<'de> Visitor<'de> for EncodingVisitor {
    type Value = Encoding;
    fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    formatter.write_str("a string label meeting the encoding standard https://encoding.spec.whatwg.org/#concept-encoding-get")
    }
    fn visit_str<E>(self, v: &str) -> Result<Self::Value, E>
    where
    E: serde::de::Error,
    {
    Ok(Encoding::for_label(v))
    }
    }
    deserializer.deserialize_str(EncodingVisitor)
    }
    }
  • file un-deletion: text.rs (-xw-x--x--)
    [3.248792][3.0:9](),[3.9][3.10:10]()
  • edit in libpijul/src/lib.rs at line 27
    [3.717829]
    [3.717829]
    mod text_encoding;
  • file un-deletion: mod.rs (-xw-x--x--)
    [3.768883][3.793238:793246](),[3.793246][3.793247:793247]()
  • replacement in libpijul/src/change.rs at line 5
    [2.2977][2.2977:3027]()
    use crate::{pristine::*, working_copy::Encoding};
    [2.2977]
    [3.831519]
    use crate::{pristine::*, text_encoding::Encoding};