Update README, get started

This commit is contained in:
alex wennerberg
2022-01-03 08:57:38 -08:00
parent 06549d688c
commit 8ad91b23d6
6 changed files with 54 additions and 6 deletions

7
Cargo.lock generated Normal file
View File

@@ -0,0 +1,7 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 3
[[package]]
name = "nanohtml2text"
version = "0.1.0"

View File

@@ -1,8 +1,6 @@
[package]
name = "html2text-lite"
name = "nanohtml2text"
version = "0.1.0"
edition = "2018"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]

13
README Normal file
View File

@@ -0,0 +1,13 @@
nanohtml2text
=============
0-dependency library to convert HTML to text; an alternative to https://crates.io/crates/html2text that doesn't use a full browser-grade HTML parser
Based on https://github.com/k3a/html2text -- basically a line-for-line rewreite
Useful for displaying HTML emails
Usage:
let s = "<b>Hacker mode</b>"
html2text(s);

View File

@@ -1,3 +0,0 @@
# HTML to text
Like html2text, but doesn't require a full browser-grade html parser

1
src/lib.rs Normal file
View File

@@ -0,0 +1 @@
fn html2text() {}

View File

@@ -1,3 +1,35 @@
// almost a line for line rewrite of https://github.com/k3a/html2text/blob/master/html2text.go
fn main() {
println!("Hello, world!");
}
fn write_space(s: &mut String) {}
fn html2text(input: &str) -> String {
let in_len = input.len();
let mut tag_start = 0;
let mut in_ent = false;
let mut bad_tag_stack_depth = 0;
let mut should_output = true;
let mut can_print_new_line = false;
let mut out_buf = String::new();
for (i, r) in input.chars().enumerate() {
if in_len > 0 && i == in_len - 1 {
can_print_new_line = false
}
if r.is_whitespace() {
if should_output && bad_tag_stack_depth == 0 && !in_ent {
write_space(&mut out_buf);
}
continue;
} else if r == ';' && in_ent {
in_ent = false;
continue;
} else if r == '&' && should_output {
let mut ent_name = String::new();
in_ent = false;
// parse the entity name, max 10 chars
}
}
out_buf
}