fast_html2md 0.0.61

A fast html2md crate for rust
Documentation
#[cfg(feature = "scraper")]
pub mod test {
    use html2md::{parse_html, rewrite_html};
    use pretty_assertions::assert_eq;

    #[test]
    fn test_tables() {
        let s = r#"<table>
  <thead>
    <tr>
      <th scope='col'>Minor1</th>
      <th scope='col'>Minor2</th>
      <th scope='col'>Minor3</th>
      <th scope='col'>Minor4</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>col1</td>
      <td>col2</td>
      <td>col3</td>
      <td>col4</td>
    </tr>
  </tbody>
</table>"#;

        let md = parse_html(s, false);

        assert_eq!(
            md,
            "|Minor1|Minor2|Minor3|Minor4|\n|||||\n| col1 | col2 | col3 | col4 |"
        );

        let md = rewrite_html(s, false);

        assert_eq!(md, "|Minor1|Minor2|Minor3|Minor4|\n|col1|col2|col3|col4|");
    }

    #[test]
    fn test_tables_invalid_more_headers() {
        let s = r#"<table>
  <thead>
    <tr>
      <th scope='col'>Minor1</th>
      <th scope='col'>Minor2</th>
      <th scope='col'>Minor3</th>
      <th scope='col'>Minor4</th>
      <th scope='col'>Minor5</th>
      <th scope='col'>Minor6</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>col1</td>
      <td>col2</td>
      <td>col3</td>
      <td>col4</td>
    </tr>
  </tbody>
</table>"#;

        let m =
        "|Minor1|Minor2|Minor3|Minor4|Minor5|Minor6|\n|||||||\n| col1 | col2 | col3 | col4 | | |";

        let md = parse_html(s, false);

        assert_eq!(md, m);

        let md = rewrite_html(s, false);

        assert_eq!(
            md,
            "|Minor1|Minor2|Minor3|Minor4|Minor5|Minor6|\n|col1|col2|col3|col4|"
        );
    }

    #[test]
    fn test_tables_invalid_more_rows() {
        let s = r#"<table>
  <thead>
    <tr>
      <th scope='col'>Minor1</th>
      <th scope='col'>Minor2</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>col1</td>
      <td>col2</td>
      <td>col3</td>
      <td>col4</td>
    </tr>
  </tbody>
</table>"#;

        let m = "|Minor1|Minor2| | |\n|||||\n| col1 | col2 |col3|col4|";

        let md = parse_html(s, false);

        assert_eq!(md, m);

        let md = rewrite_html(s, false);

        assert_eq!(md, "|Minor1|Minor2|\n|col1|col2|col3|col4|");
    }

    #[test]
    fn test_tables_odd_column_width() {
        let s = r#"<table>
  <thead>
    <tr>
      <th scope='col'>Minor</th>
      <th scope='col'>Major</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>col1</td>
      <td>col2</td>
    </tr>
  </tbody>
</table>"#;

        let md = parse_html(s, false);

        assert_eq!(md, "|Minor|Major|\n|||\n|col1 |col2 |");
    }

    #[test]
    fn test_tables_alignment() {
        let md = parse_html(
            r#"<table>
  <thead>
    <tr>
      <th align='right'>Minor1</th>
      <th align='center'>Minor2</th>
      <th align='right'>Minor3</th>
      <th align='left'>Minor4</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>col1</td>
      <td>col2</td>
      <td>col3</td>
      <td>col4</td>
    </tr>
  </tbody>
</table>"#,
            false,
        );

        assert_eq!(
            md,
            "|Minor1|Minor2|Minor3|Minor4|\n|||||\n| col1 | col2 | col3 | col4 |"
        );
    }

    #[test]
    fn test_tables_wild_example() {
        let md = parse_html(
            r#"
<table style="width: 100%;">
    <thead>
    <tr>
        <th>One ring<br></th>
        <th>Patterns<br></th>
        <th>Titanic<br></th>
        <th><br></th>
        <th><br></th>
        <th><br></th>
    </tr>
    </thead>
    <tbody>
    <tr>
        <td style="width: 16.6667%;">One ring to rule them all<br></td>
        <td style="width: 16.6667%;">There's one for the sorrow <br></td>
        <td style="width: 16.6667%;">Roll on, Titanic, roll<br></td>
        <td style="width: 16.6667%;"><br></td>
        <td style="width: 16.6667%;"><br></td>
        <td style="width: 16.6667%;"><br></td>
    </tr>
    <tr>
        <td style="width: 16.6667%;">One ring to find them<br></td>
        <td style="width: 16.6667%;">And two for the joy<br></td>
        <td style="width: 16.6667%;">You're the pride of White Star Line<br></td>
        <td style="width: 16.6667%;"><br></td>
        <td style="width: 16.6667%;"><br></td>
        <td style="width: 16.6667%;"><br></td>
    </tr>
    <tr>
        <td style="width: 16.6667%;">One ring to bring them all<br></td>
        <td style="width: 16.6667%;">And three for the girls<br></td>
        <td style="width: 16.6667%;">Roll on, Titanic, roll<br></td>
        <td style="width: 16.6667%;"><br></td>
        <td style="width: 16.6667%;"><br></td>
        <td style="width: 16.6667%;"><br></td>
    </tr>
    <tr>
        <td style="width: 16.6667%;">And in the darkness bind them<br></td>
        <td style="width: 16.6667%;">And four for the boys<br></td>
        <td style="width: 16.6667%;">Into the mists of time<br></td>
        <td style="width: 16.6667%;"><br></td>
        <td style="width: 16.6667%;"><br></td>
        <td style="width: 16.6667%;"><br></td>
    </tr>
    </tbody>
</table>"#,
            false,
        );

        assert_eq!(md, "| One ring | Patterns | Titanic | | | |\n|||||||\n| One ring to rule them all |There's one for the sorrow| Roll on, Titanic, roll | | | |\n| One ring to find them | And two for the joy |You're the pride of White Star Line| | | |\n| One ring to bring them all | And three for the girls | Roll on, Titanic, roll | | | |\n|And in the darkness bind them| And four for the boys | Into the mists of time | | | |");
    }
}