Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
const _isUnsupportedAttribute = (genus, attr) => {
let key
if (BLOCK_DIRECTIVES.indexOf(genus) > -1) {
// these are all containers which share the same attributes, so they're
// grouped under a single property
key = 'block'
} else {
// this will be the directive name, e.g., figure, video, etc
key = genus
}
return SUPPORTED_ATTRIBUTES[key][attr] !== true // bool
}
import find from 'lodash.find'
import state from '@canopycanopycanopy/b-ber-lib/State'
import { Html } from '@canopycanopycanopy/b-ber-lib'
import { BLOCK_DIRECTIVES } from '@canopycanopycanopy/b-ber-shapes-directives'
import log from '@canopycanopycanopy/b-ber-logger'
import plugin from '@canopycanopycanopy/b-ber-parser-section'
import createRenderer from '@canopycanopycanopy/b-ber-grammar-renderer'
import {
attributes,
htmlId,
} from '@canopycanopycanopy/b-ber-grammar-attributes'
// this matches *all* container-type directives, and outputs the appropriate
// HTML based on user-defined attributes
const containers = BLOCK_DIRECTIVES.join('|')
const MARKER_OPEN_RE = new RegExp(
`^(${containers}|exit)(?::([^\\s]+)(\\s.*)?)?$`
) // treat `exit` like an opening marker since we're using it as such
const MARKER_CLOSE_RE = /(exit)(?::([^\s]+))?/
// since `context` needs to be available in this `render` method, we curry it
// in and pass the resulting function to the `createRenderer` below. we also
// set a default for `context` since we'll need some of its properties during
// testing
function isGallery(directive) {
return (
directive &&
directive.type === 'gallery' &&
(state.build === 'web' || state.build === 'reader')
)
const _directiveOrder = genus =>
BLOCK_DIRECTIVES.indexOf(genus) > -1
? 'block'
: INLINE_DIRECTIVES.indexOf(genus) > -1
? 'inline'
: MISC_DIRECTIVES.indexOf(genus) > -1
? 'misc'
: null
const _lookUpFamily = genus =>
FRONTMATTER_DIRECTIVES.indexOf(genus) > -1
? 'frontmatter'
: BODYMATTER_DIRECTIVES.indexOf(genus) > -1
? 'bodymatter'
: BACKMATTER_DIRECTIVES.indexOf(genus) > -1
? 'backmatter'
: ''
const _lookUpFamily = genus =>
FRONTMATTER_DIRECTIVES.indexOf(genus) > -1
? 'frontmatter'
: BODYMATTER_DIRECTIVES.indexOf(genus) > -1
? 'bodymatter'
: BACKMATTER_DIRECTIVES.indexOf(genus) > -1
? 'backmatter'
: ''
const _lookUpFamily = genus =>
FRONTMATTER_DIRECTIVES.indexOf(genus) > -1
? 'frontmatter'
: BODYMATTER_DIRECTIVES.indexOf(genus) > -1
? 'bodymatter'
: BACKMATTER_DIRECTIVES.indexOf(genus) > -1
? 'backmatter'
: ''
const _requiresAltTag = genus =>
DIRECTIVES_REQUIRING_ALT_TAG.indexOf(genus) > -1
const _directiveOrder = genus =>
BLOCK_DIRECTIVES.indexOf(genus) > -1
? 'block'
: INLINE_DIRECTIVES.indexOf(genus) > -1
? 'inline'
: MISC_DIRECTIVES.indexOf(genus) > -1
? 'misc'
: null
const _directiveOrder = genus =>
BLOCK_DIRECTIVES.indexOf(genus) > -1
? 'block'
: INLINE_DIRECTIVES.indexOf(genus) > -1
? 'inline'
: MISC_DIRECTIVES.indexOf(genus) > -1
? 'misc'
: null
const attributesObject = (attrs, _genus, context = {}) => {
const { fileName, lineNumber } = context
const attrsObject = {}
let genus = _genus
if (!genus || typeof genus !== 'string') {
log.error(`No directive provided: ${fileName}:${lineNumber}`)
}
if (ALL_DIRECTIVES.indexOf(genus) < 0) {
log.error(`Invalid directive: [${genus}] at ${fileName}:${lineNumber}`)
}
if (DRAFT_DIRECTIVES.indexOf(genus) > -1) {
log.warn(`render [epub:${genus}] is [draft]. substituting with [chapter]`)
genus = 'chapter'
}
if (DEPRECATED_DIRECTIVES.indexOf(genus) > -1) {
log.warn(
`render [epub:${genus}] is [deprecated]. substituting with [chapter]`
)
genus = 'chapter'
}
if (attrs && typeof attrs === 'string') {