Skip to content

dspoka/marklib

 
 

Repository files navigation

marklib

Circle CI Codacy Badge Coverage Status npm Join the chat at https://gitter.im/BowlingX/marklib

A simple and fast zero-dependencies-library to transform text-selections into serializable markings.

Demo

Demo-Gif

Install

marklib can be installed with npm or bower.

npm install --save-dev marklib

bower install marklib --save

Usage

The API is quite limited right now, and supports only rendering either a range or a serialized result.

Render by selection

// obtain a selection from document
var selection = document.getSelection();

// create a new rendering based on the current document
var renderer = new Marklib.Rendering(document)
renderer.setId('myRenderId') // if an ID is not provided, a autogenerated one will be used

// renders the given selection and returns a serializable result.
var result = renderer.renderWithRange(selection.getRangeAt(0));

Constructor Arguments

    1. HTMLDocument document -> the document instance used
    1. string [cssClass], optional -> a class that is applied on each marking container (for styling)
    1. HTMLElement [context], optional -> the context used to serialize / deserialize the rendering, if not given the document instance

Render by serialized result

A Serialized results consist of 2 strings (start end end) in the following form


'body>section;0;1'`
-▲------------▲-▲ 

  • ▲ The first part defines a css-selector (queryable with document.querySelector).
  • ▲ The second part defines the text-node inside the given selector
  • ▲ The third part defines the string-offset inside this text-node

Example

 // This is the result we get from the renderWithRange method
 
 var result = {
    startContainerPath: 'body>section;0',
    endContainerPath: 'body>section;1',
    startOffset: 2,
    endOffset: 5
 }

 var rendering = new Marklib.Rendering(document);
 
 rendering.renderWithResult(result);

Use-Cases

License

The MIT License (MIT)

Copyright (c) 2015 David Heidrich

Any contribution is welcome, just issue a pull-request or bug/feature if you found something :)

About

A small library to wrap serializable TextSelections.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 95.2%
  • HTML 2.4%
  • CSS 1.5%
  • Other 0.9%