selectOptionCompliance: function(options) { return ( '<option value="' + escape(options.id) + '" selected>' + escape(options.text) + '</option>' ); }
export default (photo = {}) => ({ ...photo, // override title: escape(photo.title), description: escape(photo.description), portrait: photo.portrait || false, square: photo.square || false })
resultItem: function(options) { return ( '<div class="selectivity-result-item' + (options.disabled ? ' disabled' : '') + '"' + ' data-item-id="' + escape(options.id) + '">' + escape(options.text) + (options.submenu ? '<i class="selectivity-submenu-icon fa fa-chevron-right"></i>' : '') + '</div>' ); },
export function debugInst(inst, indentLength = 2) { if (typeof inst === 'string' || typeof inst === 'number') return escape(inst); if (!inst) return ''; if (inst._stringText) { return inst._stringText; } if (!inst.getPublicInstance) { const internal = internalInstance(inst); return debugInst(internal, indentLength); } const publicInst = inst.getPublicInstance(); if (typeof publicInst === 'string' || typeof publicInst === 'number') return escape(publicInst); if (!publicInst && !inst._renderedComponent) return ''; // do stuff with publicInst const currentElement = inst._currentElement; const type = typeName(currentElement); const props = propsString(currentElement); const children = []; if (isDOMComponent(publicInst)) { const renderedChildren = renderedChildrenOfInst(inst); if (!renderedChildren) { children.push(...childrenOfNode(currentElement)); } else { children.push(...objectValues(renderedChildren)); } } else if ( !REACT013 && isElement(currentElement) && typeof currentElement.type === 'function' ) { children.push(inst._renderedComponent); } else if ( REACT013 && isCompositeComponent(publicInst) ) { children.push(inst._renderedComponent); } const childrenStrs = compact(children.map(n => debugInst(n, indentLength))); const beforeProps = props ? ' ' : ''; const nodeClose = childrenStrs.length ? `</${type}>` : '/>'; const afterProps = childrenStrs.length ? '>' : ' '; const childrenIndented = childrenStrs.length ? `\n${childrenStrs.map(x => indent(indentLength + 2, x)).join('\n')}\n` : ''; return `<${type}${beforeProps}${props}${afterProps}${childrenIndented}${nodeClose}`; }
singleSelectedItem: function(options) { return ( '<span class="selectivity-single-selected-item" ' + 'data-item-id="' + escape(options.id) + '">' + (options.removable ? '<a class="selectivity-single-selected-item-remove">' + '<i class="fa fa-remove"></i>' + '</a>' : '') + escape(options.text) + '</span>' ); },
multipleSelectedItem: function(options) { var extraClass = (options.highlighted ? ' highlighted' : ''); return ( '<span class="selectivity-multiple-selected-item' + extraClass + '" ' + 'data-item-id="' + escape(options.id) + '">' + (options.removable ? '<a class="selectivity-multiple-selected-item-remove">' + '<i class="fa fa-remove"></i>' + '</a>' : '') + escape(options.text) + '</span>' ); },
singleSelectPlaceholder: function(options) { return ( '<div class="selectivity-placeholder">' + escape(options.placeholder) + '</div>' ); },
ajaxError: function(term) { if (term) { return 'Failed to fetch results for <b>' + escape(term) + '</b>'; } else { return 'Failed to fetch results'; } },
function highlightRender (code, lang) { if (!lang || /no(-?)highlight|plain|text/.test(lang)) { return } code = escapeHTML(code) if (lang === 'sequence') { return `<div class="sequence-diagram raw">${code}</div>` } else if (lang === 'flow') { return `<div class="flow-chart raw">${code}</div>` } else if (lang === 'graphviz') { return `<div class="graphviz raw">${code}</div>` } else if (lang === 'mermaid') { return `<div class="mermaid raw">${code}</div>` } else if (lang === 'abc') { return `<div class="abc raw">${code}</div>` } const result = { value: code } const showlinenumbers = /=$|=\d+$|=\+$/.test(lang) if (showlinenumbers) { let startnumber = 1 const matches = lang.match(/=(\d+)$/) if (matches) { startnumber = parseInt(matches[1]) } const lines = result.value.split('\n') const linenumbers = [] for (let i = 0; i < lines.length - 1; i++) { linenumbers[i] = `<span data-linenumber='${startnumber + i}'></span>` } const continuelinenumber = /=\+$/.test(lang) const linegutter = `<div class='gutter linenumber${continuelinenumber ? ' continue' : ''}'>${linenumbers.join('\n')}</div>` result.value = `<div class='wrapper'>${linegutter}<div class='code'>${result.value}</div></div>` } return result.value }
error: function(options) { return ( '<div class="selectivity-error">' + (options.escape ? escape(options.message) : options.message) + '</div>' ); },
export default function autoHtml(templateParts: string[], ...values: Value[]): string { const parts: string[] = new Array(templateParts.length*2-1); parts[0] = templateParts[0]; for (let i=0, len=values.length; i<len; i++) { const value = values[i]; parts[2*i+1] = value && Object.prototype.hasOwnProperty.call(value, '__html') ? (value:any).__html : escape(value); parts[2*i+2] = templateParts[i+1]; } return parts.join(''); }
async function(username, password, done) { const _username = escape(username) const _password = escape(password) try { const response = await pool.query( queries.find_user_by_username(_username, _password) ) const user = response.rows.length === 1 && response.rows[0] if (!user) { return done(null, false) } return done(null, user) } catch (err) { done(err) } }
vm.postLecture = function () { $scope.$emit('REQUEST_AJAX'); apiService.postLecture( escape(vm.lectureInfo.title), escape(vm.lectureInfo.description), vm.lectureInfo.type, vm.lectureInfo.imageUrl ).then( function () { $scope.$emit('RESPONSE_AJAX'); window.history.back(); }, function (err) { $scope.$emit('RESPONSE_AJAX'); $scope.$emit('ERROR', { error: err }); } ); };
export function debugNode(node, indentLength = 2) { if (typeof node === 'string' || typeof node === 'number') return escape(node); if (!node) return ''; const childrenStrs = compact(childrenOfNode(node).map(n => debugNode(n, indentLength))); const type = typeName(node); const props = propsString(node); const beforeProps = props ? ' ' : ''; const nodeClose = childrenStrs.length ? `</${type}>` : '/>'; const afterProps = childrenStrs.length ? '>' : ' '; const childrenIndented = indentChildren(childrenStrs, indentLength); return `<${type}${beforeProps}${props}${afterProps}${childrenIndented}${nodeClose}`; }
graphvizs.each(function (key, value) { try { var $value = $(value) var $ele = $(value).parent().parent() var graphviz = Viz($value.text()) if (!graphviz) throw Error('viz.js output empty graph') $value.html(graphviz) $ele.addClass('graphviz') $value.children().unwrap().unwrap() } catch (err) { $value.unwrap() $value.parent().append(`<div class="alert alert-warning">${escapeHTML(err)}</div>`) console.warn(err) } })
abcs.each((key, value) => { try { var $value = $(value) var $ele = $(value).parent().parent() window.ABCJS.renderAbc(value, $value.text()) $ele.addClass('abc') $value.children().unwrap().unwrap() const svg = $ele.find('> svg') svg[0].setAttribute('viewBox', `0 0 ${svg.attr('width')} ${svg.attr('height')}`) svg[0].setAttribute('preserveAspectRatio', 'xMidYMid meet') } catch (err) { $value.unwrap() $value.parent().append(`<div class="alert alert-warning">${escapeHTML(err)}</div>`) console.warn(err) } })
it('should exec example 5', function () { const exprObj = expression('hello {h1(name.first)}'); const formatters = { h1(f) { return `--<h1>${f == null ? '' : loscape( f.toUpperCase())}</h1>--`; } }; const str = exprObj.format({ name: { first: 'Joe<b/>', last : 'Bob' } }, formatters); //str is hello <h1>JOE</h1> expect(str).to.eql('hello <h1>JOE<B/></h1>'); })
mermaids.each((key, value) => { try { var $value = $(value) const $ele = $(value).closest('pre') window.mermaid.mermaidAPI.parse($value.text()) $ele.addClass('mermaid') $ele.html($value.text()) window.mermaid.init(undefined, $ele) } catch (err) { var errormessage = err if (err.str) { errormessage = err.str } $value.unwrap() $value.parent().append(`<div class="alert alert-warning">${escapeHTML(errormessage)}</div>`) console.warn(errormessage) } })
sequences.each((key, value) => { try { var $value = $(value) const $ele = $(value).parent().parent() const sequence = $value sequence.sequenceDiagram({ theme: 'simple' }) $ele.addClass('sequence-diagram') $value.children().unwrap().unwrap() const svg = $ele.find('> svg') svg[0].setAttribute('viewBox', `0 0 ${svg.attr('width')} ${svg.attr('height')}`) svg[0].setAttribute('preserveAspectRatio', 'xMidYMid meet') } catch (err) { $value.unwrap() $value.parent().append(`<div class="alert alert-warning">${escapeHTML(err)}</div>`) console.warn(err) } })
dropdown: function(options) { var extraClass = (options.dropdownCssClass ? ' ' + options.dropdownCssClass : ''), searchInput = ''; if (options.showSearchInput) { extraClass += ' has-search-input'; var placeholder = options.searchInputPlaceholder; searchInput = ( '<div class="selectivity-search-input-container">' + '<input type="text" class="selectivity-search-input"' + (placeholder ? ' placeholder="' + escape(placeholder) + '"' : '') + '>' + '</div>' ); } return ( '<div class="selectivity-dropdown' + extraClass + '">' + searchInput + '<div class="selectivity-results-container"></div>' + '</div>' ); },
flow.each((key, value) => { try { var $value = $(value) const $ele = $(value).parent().parent() const chart = window.flowchart.parse($value.text()) $value.html('') chart.drawSVG(value, { 'line-width': 2, 'fill': 'none', 'font-size': '16px', 'font-family': "'Andale Mono', monospace" }) $ele.addClass('flow-chart') $value.children().unwrap().unwrap() } catch (err) { $value.unwrap() $value.parent().append(`<div class="alert alert-warning">${escapeHTML(err)}</div>`) console.warn(err) } })
export function postProcess (code) { const result = $(`<div>${code}</div>`) // process style tags result.find('style').each((key, value) => { let html = $(value).html() // unescape > symbel inside the style tags html = html.replace(/>/g, '>') // remove css @import to prevent XSS html = html.replace(/@import url\(([^)]*)\);?/gi, '') $(value).html(html) }) // link should open in new window or tab // also add noopener to prevent clickjacking // See details: https://mathiasbynens.github.io/rel-noopener/ result.find('a:not([href^="#"]):not([target])').attr('target', '_blank').attr('rel', 'noopener') // update continue line numbers const linenumberdivs = result.find('.gutter.linenumber').toArray() for (let i = 0; i < linenumberdivs.length; i++) { if ($(linenumberdivs[i]).hasClass('continue')) { const startnumber = linenumberdivs[i - 1] ? parseInt($(linenumberdivs[i - 1]).find('> span').last().attr('data-linenumber')) : 0 $(linenumberdivs[i]).find('> span').each((key, value) => { $(value).attr('data-linenumber', startnumber + key + 1) }) } } // show yaml meta paring error if (md.metaError) { var warning = result.find('div#meta-error') if (warning && warning.length > 0) { warning.text(md.metaError) } else { warning = $(`<div id="meta-error" class="alert alert-warning">${escapeHTML(md.metaError)}</div>`) result.prepend(warning) } } return result }
function defaultSnippet( doc ) { var content = doc.body.substring( 0, DEFAULT_SNIPPET_LENGTH ); return escapeHTML( content ) + '…'; }
noResultsForTerm: function(term) { return 'No results for <b>' + escape(term) + '</b>'; }
resultLabel: function(options) { return '<div class="selectivity-result-label">' + escape(options.text) + '</div>'; },
(text => escapeHtml(text));
(text => escapeHtml(text).replace(regex, '<mark>$1</mark>')) :