all files / src/ Lowlight.js

100% Statements 17/17
90% Branches 9/10
100% Functions 2/2
100% Lines 17/17
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55                                                                           
'use strict'
 
var React = require('react')
var low = require('lowlight/lib/core')
var mapChildren = require('./mapChildren')
 
var registeredLanguages = 0
 
function Lowlight (props) {
  Eif (process.env.NODE_ENV !== 'production') {
    if (!props.language && registeredLanguages === 0) {
      console.warn(
        'No language definitions seems to be registered, ' +
        'did you forget to call `Lowlight.registerLanguage`?'
      )
    }
  }
 
  var result = props.language
    ? low.highlight(props.language, props.value, {prefix: props.prefix})
    : low.highlightAuto(props.value, {prefix: props.prefix, subset: props.subset})
 
  var codeProps = result.language
    ? {className: 'hljs ' + result.language}
    : {className: 'hljs'}
 
  return (
    React.createElement('pre', {className: props.className},
      React.createElement('code', codeProps,
        result.value.map(mapChildren.depth(0))
      )
    )
  )
}
 
Lowlight.propTypes = {
  className: React.PropTypes.string,
  language: React.PropTypes.string,
  value: React.PropTypes.string.isRequired,
  prefix: React.PropTypes.string,
  subset: React.PropTypes.arrayOf(React.PropTypes.string)
}
 
Lowlight.defaultProps = {
  className: 'lowlight',
  prefix: 'hljs-'
}
 
Lowlight.registerLanguage = function () {
  registeredLanguages++
  low.registerLanguage.apply(low, arguments)
}
 
module.exports = Lowlight