dubdiff/src/common/selectors.js

60 lines
1.3 KiB
JavaScript
Raw Normal View History

// per http://redux.js.org/docs/recipes/ComputingDerivedData.html
2016-11-23 22:58:48 +01:00
import { createSelector } from 'reselect'
2016-11-28 18:47:47 +01:00
import React from 'react'
import {Format, Show} from './constants'
2016-11-28 18:47:47 +01:00
import * as Dubdiff from './util/dubdiff'
2016-11-23 22:58:48 +01:00
const input = (state) => state.input
2016-11-28 18:47:47 +01:00
const format = (state) => state.format
const show = (state) => state.show
2016-11-23 22:58:48 +01:00
export const safeInput = createSelector(
[input],
(input) => {
//! !! sanitize the input here and return
2016-11-23 22:58:48 +01:00
return input
}
2016-11-28 18:47:47 +01:00
)
export const isMarkdownFormat = createSelector(
[format],
(format) => {
return format === Format.MARKDOWN
2016-11-28 18:47:47 +01:00
}
)
const isShow = (type) => createSelector(
[show],
(show) => {
return show === type
2016-11-28 18:47:47 +01:00
}
)
export const isShowOriginal = isShow(Show.ORIGINAL)
export const isShowFinal = isShow(Show.FINAL)
export const isShowDifference = isShow(Show.DIFFERENCE)
2016-11-28 18:47:47 +01:00
export const diff = createSelector(
[format, safeInput],
(format, safeInput) => {
if (format === Format.PLAINTEXT) {
2017-01-05 23:18:03 +01:00
return Dubdiff.plaintextDiff(safeInput.original, safeInput.final)
} else if (format === Format.MARKDOWN) {
2017-01-05 23:18:03 +01:00
return Dubdiff.markdownDiff(safeInput.original, safeInput.final)
}
2016-11-28 18:47:47 +01:00
}
)
/*
html diff
---
diffHtml(parentOriginal, parentFinal) {
create stringOriginal, stringFinal consisting of
2016-11-28 18:47:47 +01:00
}
*/