1
0
mirror of https://github.com/ianstormtaylor/slate.git synced 2025-02-23 16:55:23 +01:00
slate/lib/serializers/plain.js
2016-07-14 17:40:20 -07:00

72 lines
1.1 KiB
JavaScript

import Block from '../models/block'
import Document from '../models/document'
import State from '../models/state'
import Text from '../models/text'
/**
* Deserialize a plain text `string` to a state.
*
* @param {String} string
* @return {State}
*/
function deserialize(string) {
return State.create({
document: Document.create({
nodes: string.split('\n').map(deserializeLine)
})
})
}
/**
* Deserialize a `line` of text.
*
* @param {String} line
* @return {Block}
*/
function deserializeLine(line) {
return Block.create({
type: 'line',
nodes: [
Text.create({
characters: line.split('').map(deserializeCharacter)
})
]
})
}
/**
* Deserialize a `character`.
*
* @param {String} char
* @return {Character}
*/
function deserializeCharacter(char) {
return { text: char }
}
/**
* Serialize a `state` to plain text.
*
* @param {State} state
* @return {String}
*/
function serialize(state) {
return state.document.nodes
.map(block => block.text)
.join('\n')
}
/**
* Export.
*/
export default {
deserialize,
serialize
}