Coder Social home page Coder Social logo

niknetniko / asciidoctor-html5s Goto Github PK

View Code? Open in Web Editor NEW

This project forked from jirutka/asciidoctor-html5s

0.0 1.0 0.0 302 KB

Semantic HTML5 converter (backend) for Asciidoctor

License: MIT License

JavaScript 1.14% Ruby 61.57% HTML 30.70% Slim 6.59%

asciidoctor-html5s's Introduction

Semantic HTML5 Backend For Asciidoctor

CI Status Gem Version npm Version

This project provides alternative HTML5 converter (backend) for Asciidoctor that focuses on correct semantics, accessibility and compatibility with common typographic CSS styles.

Goals

  • Clean markup with correct HTML5 semantics.

  • Good accessibility for people with disabilities.

  • Compatibility with common typographic CSS styles when possible and especially with GitHub and GitLab.

  • Full standalone converter without fallback to the built-in Asciidoctor converters.

  • Easy to use and integrate into third-party projects.

  • Well readable and maintainable code – this should be never sacrificed for performance (I’m looking at you, Asciidoctor!).

Non-goals

  • Compatibility with existing Asciidoctor CSS styles.

Text Substitutions

Quotes

Asciidoctor provides syntax for so-called “curved quotation marks” (which are actually just the correct quotation marks), but the built-in converters outputs only one (hard-coded) type of the single/double quotation marks — that one used in English and few other languages. This converter outputs the correct type of the quotation marks based on the specified language (using standard lang attribute).

Name Syntax Languages (:lang:) HTML Rendered

double quotes

 "`word`"

af, en, eo, ga, hi, ia, id, ko, mt, th, tr, zh

 “word”

“word”

bs, fi, sv

 ”word”

”word”

cs, da, de, is, lt, sl, sk, sr

 „word“

„word“

hu, pl, nl, ro

 „word”

„word”

single quotes

 '`word`'

af, en, eo, ga, hi, ia, id, ko, mt, th, tr, zh

 ‘word’

‘word’

bs, fi, sv

 ’word’

’word’

cs, da, de, is, lt, sl, sk, sr

 ‚word‘

‚word‘

nl

 ‚word’

‚word’

hu, pl, ro

 «word»

«word»

The default (fallback) type is the first one.

Replacements

Asciidoctor replaces -- with em dash (—) and does not provide any replacement for en dash (–). That’s not very convenient, because en dash is more common than em dash; at least in (British) English and Czech (actually we don’t use em dash at all). So this extension also modifies the replacements table: changes -- to en dash and adds --- for em dash.

Name Syntax Unicode Rendered Notes

En dash

 --
 –

Only replaced if between two word characters, between a word character and a line boundary, or flanked by spaces.

When flanked by space characters (e.g. a -- b or a --- b), the normal spaces are replaced by thin spaces ( ).

Em dash

 ---
 —

Other Enhancements

Image Block

The link attribute recognizes few special values:

link=self

Make the image a link with URL of the image itself – to open it in full size.

link=none / link=false

Suppress the effect of :html5s-image-default-link: self, i.e. remove the default image link.

Both block image and inline image supports additional attribute loading (see Lazy loading on MDN for more information).

Additional Inline Formatting Roles

del

[del]#deleted text# is rendered as <del>deleted text</del>.

ins

[ins]#inserted text# is rendered as <ins>inserted text</ins>.

strike

[strike]#inserted text# is rendered as <s>inserted text</s>. This is an alias for line-through.

Requirements

Note: This converter consists of Slim templates, but they are precompiled into pure Ruby code using asciidoctor-templates-compiler, so you don’t need Slim to use it!

Ruby

Node.js

Installation

Ruby

Install asciidoctor-html5s from Rubygems:

gem install asciidoctor-html5s

or to get the latest development version:

gem install --pre asciidoctor-html5s

Node.js

Install asciidoctor-html5s from npmjs.com:

npm install --save asciidoctor-html5s

Usage

CLI

asciidoctor -r asciidoctor-html5s -b html5s FILE...

Node.js

// Load asciidoctor.js and asciidoctor-html5s.
const asciidoctor = require('@asciidoctor/core')()
const asciidoctorHtml5s = require('asciidoctor-html5s')

// Register the HTML5s converter and supporting extension.
asciidoctorHtml5s.register()

// Convert the content to HTML using html5s converter.
const content = "Hello, *world!*!"
const html = asciidoctor.convert(content, { backend: 'html5s' })
console.log(html)

Attributes

Extra attributes accepted by the asciidoctor-html5s:

html5s-force-stem-type

Ignore declared (e.g. :stem: asciimath, asciimath:[], …​) and default type of the stem macro/block and always use the one specified by this attribute.
Asciidoctor hard-codes the default stem type to “asciimath”, which is not supported by KaTeX.

html5s-image-default-link: self

Make every block image a link with the image’s source URL (i.e. user can click on the image to open it in full size), unless the link attribute is defined and is not none or false.

html5s-image-self-link-label

The link title and ARIA label for the block image link that points to the image file (i.e. href equals the image’s src). Default is Open the image in full size.

License

This project is licensed under MIT License. For the full text of the license, see the LICENSE file.

asciidoctor-html5s's People

Contributors

ahus1 avatar jeffkreeftmeijer avatar jirutka avatar niknetniko avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.