Пример #1
0
 selectOptionCompliance: function(options) {
     return (
         '<option value="' + escape(options.id) + '" selected>' +
             escape(options.text) +
         '</option>'
     );
 }
Пример #2
0
export default (photo = {}) => ({
  ...photo,
  // override
  title: escape(photo.title),
  description: escape(photo.description),
  portrait: photo.portrait || false,
  square: photo.square || false
})
Пример #3
0
 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>'
     );
 },
Пример #4
0
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}`;
}
Пример #5
0
 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>'
     );
 },
Пример #6
0
 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>'
     );
 },
Пример #7
0
 singleSelectPlaceholder: function(options) {
     return (
         '<div class="selectivity-placeholder">' +
             escape(options.placeholder) +
         '</div>'
     );
 },
Пример #8
0
 ajaxError: function(term) {
     if (term) {
         return 'Failed to fetch results for <b>' + escape(term) + '</b>';
     } else {
         return 'Failed to fetch results';
     }
 },
Пример #9
0
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
}
Пример #10
0
 error: function(options) {
     return (
         '<div class="selectivity-error">' +
             (options.escape ? escape(options.message) : options.message) +
         '</div>'
     );
 },
Пример #11
0
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('');
}
Пример #12
0
    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
                });
            }
        );
    };
Пример #14
0
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}`;
}
Пример #15
0
  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)
    }
  })
Пример #16
0
  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)
    }
  })
Пример #17
0
    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&lt;B/&gt;</h1>');
    })
Пример #18
0
  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)
    }
  })
Пример #19
0
  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)
    }
  })
Пример #20
0
    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>'
        );
    },
Пример #21
0
  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)
    }
  })
Пример #22
0
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(/&gt;/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
}
Пример #23
0
function defaultSnippet( doc ) {
	var content = doc.body.substring( 0, DEFAULT_SNIPPET_LENGTH );
	return escapeHTML( content ) + '&hellip;';
}
Пример #24
0
 noResultsForTerm: function(term) {
     return 'No results for <b>' + escape(term) + '</b>';
 }
Пример #25
0
 resultLabel: function(options) {
     return '<div class="selectivity-result-label">' + escape(options.text) + '</div>';
 },
Пример #26
0
 (text => escapeHtml(text));
Пример #27
0
 (text => escapeHtml(text).replace(regex, '<mark>$1</mark>')) :