html2org

package module
v0.0.12 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 13, 2021 License: MIT Imports: 11 Imported by: 0

README

html2org

Documentation Report Card Github actions

Converts HTML into emacs org file

Fork of jaytailor's html2text

If you would like to use this package as CLI, see here

Download the package

go get github.com/satotake/html2org

Example usage

package main

import (
	"fmt"

	"github.com/satotake/html2org"
)

func main() {
	inputHTML := `
<html>
  <head>
    <title>My Mega Service</title>
    <link rel=\"stylesheet\" href=\"main.css\">
    <style type=\"text/css\">body { color: #fff; }</style>
  </head>

  <body>
    <div class="logo">
      <a href="http://jaytaylor.com/"><img src="/logo-image.jpg" alt="Mega Service"/></a>
    </div>

    <h1>Welcome to your new account on my service!</h1>

    <p>
      Here is some more information:

      <ul>
        <li>Link 1: <a href="https://example.com">Example.com</a></li>
        <li>Link 2: <a href="https://example2.com">Example2.com</a></li>
        <li>Something else</li>
      </ul>
    </p>

    <table>
      <thead>
        <tr><th>Header 1</th><th>Header 2</th></tr>
      </thead>
      <tfoot>
        <tr><td>Footer 1</td><td>Footer 2</td></tr>
      </tfoot>
      <tbody>
        <tr><td>Row 1 Col 1</td><td>Row 1 Col 2</td></tr>
        <tr><td>Row 2 Col 1</td><td>Row 2 Col 2</td></tr>
      </tbody>
    </table>
  </body>
</html>`

	res, err := html2org.FromString(inputHTML, html2org.Options{PrettyTables: true})
	if err != nil {
		panic(err)
	}
	fmt.Println(res)
}

Output:

#+TITLE: My Mega Service

#+NAME: Mega Service
[[/logo-image.jpg]]
[[http://jaytaylor.com/][Mega Service]]

* Welcome to your new account on my service!

Here is some more information:

- Link 1: [[https://example.com][Example.com]]
- Link 2: [[https://example2.com][Example2.com]]
- Something else

|  HEADER 1   |  HEADER 2   |
|-------------+-------------|
| Row 1 Col 1 | Row 1 Col 2 |
| Row 2 Col 1 | Row 2 Col 2 |
|-------------+-------------|
|  FOOTER 1   |  FOOTER 2   |

Unit-tests

Running the unit-tests is straightforward and standard:

go test

Documentation

Overview

Example
inputHTML := `
<html>
	<head>
		<title>My Mega Service</title>
		<link rel=\"stylesheet\" href=\"main.css\">
		<style type=\"text/css\">body { color: #fff; }</style>
	</head>

	<body>
		<div class="logo">
			<a href="http://jaytaylor.com/"><img src="/logo-image.jpg" alt="Mega Service"/></a>
		</div>

		<h1>Welcome to your new account on my service!</h1>

		<p>
			Here is some more information:

			<ul>
				<li>Link 1: <a href="https://example.com">Example.com</a></li>
				<li>Link 2: <a href="https://example2.com">Example2.com</a></li>
				<li>Something else</li>
			</ul>
		</p>

		<table>
			<thead>
				<tr><th>Header 1</th><th>Header 2</th></tr>
			</thead>
			<tfoot>
				<tr><td>Footer 1</td><td>Footer 2</td></tr>
			</tfoot>
			<tbody>
				<tr><td>Row 1 Col 1</td><td>Row 1 Col 2</td></tr>
				<tr><td>Row 2 Col 1</td><td>Row 2 Col 2</td></tr>
			</tbody>
		</table>
	</body>
</html>`

text, err := FromString(inputHTML, Options{PrettyTables: true})
if err != nil {
	panic(err)
}
fmt.Println(text)
Output:

#+TITLE: My Mega Service

#+CAPTION: Mega Service
[[/logo-image.jpg]]
[[http://jaytaylor.com/][Mega Service]]

* Welcome to your new account on my service!

Here is some more information:

- Link 1: [[https://example.com][Example.com]]
- Link 2: [[https://example2.com][Example2.com]]
- Something else

|  HEADER 1   |  HEADER 2   |
|-------------+-------------|
| Row 1 Col 1 | Row 1 Col 2 |
| Row 2 Col 1 | Row 2 Col 2 |
|-------------+-------------|
|  FOOTER 1   |  FOOTER 2   |

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

func FromHTMLNode

func FromHTMLNode(doc *html.Node, o ...Options) (string, error)

FromHTMLNode renders text output from a pre-parsed HTML document.

func FromReader

func FromReader(reader io.Reader, options ...Options) (string, error)

FromReader renders text output after parsing HTML for the specified io.Reader.

func FromString

func FromString(input string, options ...Options) (string, error)

FromString parses HTML from the input string, then renders the text form.

Types

type Options

type Options struct {
	PrettyTables        bool                 // Turns on pretty ASCII rendering for table elements.
	PrettyTablesOptions *PrettyTablesOptions // Configures pretty ASCII rendering for table elements.
	OmitLinks           bool                 // Turns on omitting links
	BreakLongLines      bool
	BaseURL             string
	ShowNoscripts       bool
	InternalLinks       bool
	ShowLongDataURL     bool
}

Options provide toggles and overrides to control specific rendering behaviors.

type PrettyTablesOptions

type PrettyTablesOptions struct {
	AutoFormatHeader     bool
	AutoWrapText         bool
	ReflowDuringAutoWrap bool
	ColWidth             int
	ColumnSeparator      string
	RowSeparator         string
	CenterSeparator      string
	HeaderAlignment      int
	FooterAlignment      int
	Alignment            int
	ColumnAlignment      []int
	NewLine              string
	HeaderLine           bool
	RowLine              bool
	AutoMergeCells       bool
	Borders              tablewriter.Border
	OrgFormat            bool
}

PrettyTablesOptions overrides tablewriter behaviors

func NewPrettyTablesOptions

func NewPrettyTablesOptions() *PrettyTablesOptions

NewPrettyTablesOptions creates PrettyTablesOptions with default settings

Directories

Path Synopsis
cmd

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL