videos

package module
v0.1.2 Latest Latest
Warning

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

Go to latest
Published: Apr 25, 2022 License: MIT Imports: 9 Imported by: 0

README

goldmark-videos

goldmark-embed is an extension for the [goldmark][goldmark] library that extends the Markdown ![]() image embed syntax to support additional media formats.

YouTube only at first.

Base on goldmark-embed, Support customize option to embed video use ifmarme.

Demo

This markdown:

# Hello goldmark-videos

![](https://www.youtube.com/embed/LDflrf85h9Y)

![](https://v.qq.com/txp/iframe/player.html?vid=i0042v2fm34)

![](//player.bilibili.com/player.html?aid=634140852&bvid=BV1sb4y1t7xV&cid=442265383&page=1)

Becomes this HTML:

<h1>Hello goldmark-videos</h1>
<p>
	<iframe
		width="560"
		height="315"
		src="https://www.youtube.com/embed/dQw4w9WgXcQ"
		frameborder="0"
		allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
		allowfullscreen
	></iframe>
</p>

<p>
	<iframe
		width="560"
		height="315"
		src="https://v.qq.com/txp/iframe/player.html?vid=i0042v2fm34"
		frameborder="0"
		allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
		allowfullscreen
	></iframe>
</p>

<p>
	<iframe
		width="560"
		height="315"
		src="//player.bilibili.com/player.html?aid=634140852&bvid=BV1sb4y1t7xV&cid=442265383&page=1"
		frameborder="0"
		allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
		allowfullscreen
	></iframe>
</p>
Installation
go get github.com/fundipper/goldmark-videos

Usage

  markdown := goldmark.New(
	goldmark.WithExtensions(
		videos.NewExtender(
			map[string]string{
				"www.youtube.com":     "/embed",
				"v.qq.com":            "/txp/iframe/player.html",
				"player.bilibili.com": "/player.html",
			},
			map[string]string{
				"width":           "560",
				"height":          "315",
				"border":          "0",
				"scrolling":       "no",
				"frameborder":     "no",
				"framespacing":    "0",
				"allowfullscreen": "true",	
			},
		),
	),
)
  var buf bytes.Buffer
  if err := markdown.Convert([]byte(source), &buf); err != nil {
    panic(err)
  }
  fmt.Print(buf)
}

thanks

Goldmark

13rac1

Documentation

Overview

Example
package main

import (
	"bytes"
	"fmt"

	videos "github.com/fundipper/goldmark-videos"
	"github.com/yuin/goldmark"
)

var source = []byte(`# Hello goldmark-videos

![](https://www.youtube.com/embed/LDflrf85h9Y)

![](https://v.qq.com/txp/iframe/player.html?vid=i0042v2fm34)

![](//player.bilibili.com/player.html?aid=634140852&bvid=BV1sb4y1t7xV&cid=442265383&page=1)
`)

func main() {
	markdown := goldmark.New(
		goldmark.WithExtensions(
			videos.NewExtender(
				map[string]string{
					"www.youtube.com":     "/embed",
					"v.qq.com":            "/txp/iframe/player.html",
					"player.bilibili.com": "/player.html",
				},
				map[string]string{
					"width":           "560",
					"height":          "315",
					"border":          "0",
					"scrolling":       "no",
					"frameborder":     "no",
					"framespacing":    "0",
					"allowfullscreen": "true",
				},
			),
		),
	)
	var buf bytes.Buffer
	if err := markdown.Convert([]byte(source), &buf); err != nil {
		panic(err)
	}
	fmt.Print(buf)

	// ouput:
	// <h1>Hello goldmark-videos</h1>
	// <p><iframe width="560" height="315" src="https://www.youtube.com/embed/dQw4w9WgXcQ" frameborder="0"
	// allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
	// allowfullscreen></iframe></p>

	// <p><iframe width="560" height="315" src="https://v.qq.com/txp/iframe/player.html?vid=i0042v2fm34" frameborder="0"
	// allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
	// allowfullscreen></iframe></p>

	// <p><iframe width="560" height="315" src="//player.bilibili.com/player.html?aid=634140852&bvid=BV1sb4y1t7xV&cid=442265383&page=1" frameborder="0"
	// allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
	// allowfullscreen></iframe></p>
}
Output:

Index

Examples

Constants

This section is empty.

Variables

View Source
var KindVideo = ast.NewNodeKind("Video")

KindVideo is a NodeKind of the video node.

View Source
var VideoAttributeFilter = html.ImageAttributeFilter.Extend(
	[]byte("scrolling"),
	[]byte("frameborder"),
	[]byte("framespacing"),
	[]byte("allowfullscreen"),
)

VideoAttributeFilter defines attribute names which video elements can have.

Functions

func NewExtender

func NewExtender(source map[string]string, attribute map[string]string) goldmark.Extender

New returns a new Embed extension.

func NewRenderer

func NewRenderer() renderer.NodeRenderer

NewRenderer builds a new Renderer with given options and returns it.

Types

type Extender

type Extender struct {
	Source    map[string]string
	Attribute map[string]string
}

func (*Extender) Extend

func (e *Extender) Extend(m goldmark.Markdown)

type Renderer

type Renderer struct {
	html.Config
}

Renderer struct is a renderer.NodeRenderer implementation for the extension.

func (*Renderer) RegisterFuncs

func (r *Renderer) RegisterFuncs(reg renderer.NodeRendererFuncRegisterer)

RegisterFuncs implements NodeRenderer.RegisterFuncs.

type Transformer

type Transformer struct{}

func NewTransformer

func NewTransformer() *Transformer

func (*Transformer) Transform

func (a *Transformer) Transform(node *ast.Document, reader text.Reader, pc parser.Context)

type Video

type Video struct {
	ast.Image
}

Video struct represents a video of the Markdown text.

func NewVideo

func NewVideo(image *ast.Image) *Video

NewVideo returns a new video node.

func (*Video) Kind

func (v *Video) Kind() ast.NodeKind

Kind implements Node.Kind.

Jump to

Keyboard shortcuts

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