Update README, get started
This commit is contained in:
7
Cargo.lock
generated
Normal file
7
Cargo.lock
generated
Normal 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"
|
||||
@@ -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
13
README
Normal 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);
|
||||
@@ -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
1
src/lib.rs
Normal file
@@ -0,0 +1 @@
|
||||
fn html2text() {}
|
||||
32
src/main.rs
32
src/main.rs
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user