stats

package module
v0.0.0-...-9826a26 Latest Latest
Warning

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

Go to latest
Published: Dec 27, 2019 License: MIT Imports: 8 Imported by: 1

README

goldmark-stats

GoDoc

This goldmark parser extension adds support for text statistic

doc := goldmark.DefaultParser().Parse(text.NewReader(source))
info := New(doc, source)
fmt.Printf("words: %d, unique: %d, chars: %d, reading time: %v\n",
    info.Words, info.Unique(), info.Chars, info.Duration(1200))
// Output:
// words: 435, unique: 154, chars: 2902, reading time: 2m25s

Documentation

Overview

Package stats is a extension for the goldmark (http://github.com/yuin/goldmark).

This extension adds text statistic function.

Example
var source = []byte(`# Lorem ipsum

Lorem ipsum dolor sit amet, vel enim, sed pellentesque. Erat at quam faucibus 
vitae cras, et et, donec parturient, praesent mus velit vestibulum amet. Sapien 
pretium wisi sed viverra eu, viverra sed ullamcorper mi urna sem integer, donec 
sit semper metus sit mus, nec justo rutrum, parturient id. Malesuada lectus 
commodo adipiscing elit curabitur lacus, tortor vivamus eros placerat faucibus, 
nulla hendrerit, nulla imperdiet nec, sollicitudin sociosqu etiam. Magna ad erat 
omnis donec potenti vel, vestibulum amet suspendisse quis, varius interdum a 
potenti nec id laoreet, eu sodales neque aliquet. Amet feugiat justo natoque, 
vitae quisque fermentum est nunc, sit nulla laoreet risus accumsan dictum nec. 
Mauris lectus ut auctor adipiscing a, mauris non ligula consequat dis et. Lacus 
non sit. Sodales fringilla aenean sed. Justo ut nec congue dolore vestibulum 
neque, cras mauris sem fermentum et, quis bibendum cursus. Neque sit cum 
malesuada lobortis. Libero curabitur ac, vitae consequat nisl consectetuer, 
volutpat pellentesque vitae aliquam eu rutrum dolor, ipsum elementum ipsum 
voluptates dolor etiam.

Quisque ultricies commodo. Nunc posuere nulla odio eget vitae nulla, magna ipsum 
in odio mauris pretium nunc, in explicabo proin curabitur in sed dui, nulla 
massa luctus sapien. Vivamus porttitor etiam, mauris praesent sociis tempus 
massa sollicitudin, porttitor irure integer tincidunt elit tincidunt sed. 
Natoque pede tortor. Aliquam quam at, aliquam suspendisse rutrum consectetuer. 
Pulvinar ultricies suscipit in. Adipiscing ac in sollicitudin, rhoncus quis est 
placerat. Imperdiet pretium, consectetuer est tincidunt ut viverra id, ultricies 
porttitor aut. Placerat aliquet. Scelerisque amet sed nulla lorem. Voluptatem 
vivamus ligula luctus, cursus tincidunt lobortis. Lorem lacus, vel risus tortor 
quam varius, nec blandit hac nam rutrum in a, lacinia orci felis rutrum, 
porttitor est velit.

Sed a, ut dictum in, a vel ac nunc pellentesque cupiditate, pede vehicula illo 
commodo non metus ultrices. Ut a imperdiet nulla vehicula, eros lectus mauris 
id, molestie a delectus nulla sociis nulla. Eget porta cursus tempus, vestibulum 
aut, hendrerit urna, tortor dictumst, eu wisi scelerisque. Ut imperdiet suscipit 
quam nec mus ligula. Commodo ipsum lorem. Eu wisi eget vivamus commodo, ac 
mauris risus mus arcu wisi, purus placerat lacinia nunc diam, vel vehicula 
pellentesque odio sodales elit velit.

Magnis arcu mauris massa. Adipiscing in laoreet penatibus, sagittis molestie 
eget aliquip, dui posuere ut bibendum ipsum, quis felis donec tellus proin. In 
mauris sapien, nec metus risus sapien, felis leo mi turpis, et suscipit. Nunc 
scelerisque quia tristique, ac lacus enim massa, dolor ante ipsum urna rutrum 
tellus. Ac eu orci ligula, voluptatum integer, augue ornare in in, wisi rhoncus 
vivamus, fusce vestibulum integer mattis dui et. Non nunc vestibulum, interdum 
neque, risus accumsan felis adipiscing.
`)
doc := goldmark.DefaultParser().Parse(text.NewReader(source))
info := New(doc, source)
fmt.Printf("words: %d, unique: %d, chars: %d, reading time: %v\n",
	info.Words, info.Unique(), info.Chars, info.Duration(1200))
Output:

words: 435, unique: 154, chars: 2902, reading time: 2m25s

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Info

type Info struct {
	Words     int            // words count
	Chars     int            // charts count
	NoSpaces  int            // without spaces
	Frequency map[string]int // unique words with frequency count
	// contains filtered or unexported fields
}

Info stats from markdown text.

func New

func New(node ast.Node, source []byte) *Info

New return text statistic info from parsed markdown document.

func (Info) AuthorPages

func (info Info) AuthorPages() float32

AuthorPages will return the author pages length.

func (Info) Duration

func (info Info) Duration(speed int) time.Duration

Duration will return the approximate text reading time at a given speed reading (characters per minute). For the Russian language, the average speed is 1500 characters per minute.

func (*Info) MostUsed

func (info *Info) MostUsed() []WordTuple

MostUsed return sorted word by frequency.

func (Info) Pages

func (info Info) Pages() int

Pages will return the aproxumate pages count.

func (Info) Unique

func (info Info) Unique() int

Unique returns the number of unique words in the text.

type WordTuple

type WordTuple struct {
	Word  string
	Count int
}

func (WordTuple) String

func (t WordTuple) String() string

Jump to

Keyboard shortcuts

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