85605124cfc4cd6c2423dfcec31f1d1138f5fe3f6c3ef5d6d409aed508ba81532525910718e6e50a7b7bf822b614478fcc6b1582c51df8342fb6b326161bbe 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. import Vue, { VNode } from "vue";
  2. import {
  3. compile,
  4. compileToFunctions,
  5. ssrCompile,
  6. ssrCompileToFunctions,
  7. parseComponent,
  8. generateCodeFrame
  9. } from "./";
  10. // check compile options
  11. const compiled = compile("<div>hi</div>", {
  12. outputSourceRange: true,
  13. preserveWhitespace: false,
  14. whitespace: 'condense',
  15. modules: [
  16. {
  17. preTransformNode: el => el,
  18. transformNode: el => el,
  19. postTransformNode: el => {
  20. el.tag = "p";
  21. },
  22. genData: el => el.tag,
  23. transformCode: (el, code) => code,
  24. staticKeys: ["test"]
  25. }
  26. ],
  27. directives: {
  28. test: (node, directiveMeta) => {
  29. node.tag;
  30. directiveMeta.value;
  31. }
  32. }
  33. });
  34. // can be passed to function constructor
  35. new Function(compiled.render);
  36. compiled.staticRenderFns.map(fn => new Function(fn));
  37. // with outputSourceRange: true
  38. // errors should be objects with range
  39. compiled.errors.forEach(e => {
  40. console.log(e.msg)
  41. })
  42. // without option or without outputSourceRange: true, should be strings
  43. const { errors } = compile(`foo`)
  44. errors.forEach(e => {
  45. console.log(e.length)
  46. })
  47. const { errors: errors2 } = compile(`foo`, {})
  48. errors2.forEach(e => {
  49. console.log(e.length)
  50. })
  51. const { errors: errors3 } = compile(`foo`, {
  52. outputSourceRange: false
  53. })
  54. errors3.forEach(e => {
  55. console.log(e.length)
  56. })
  57. const compiledFns = compileToFunctions("<div>hi</div>");
  58. // can be passed to component render / staticRenderFns options
  59. const vm = new Vue({
  60. data() {
  61. return {
  62. test: "Test"
  63. };
  64. },
  65. render: compiledFns.render,
  66. staticRenderFns: compiledFns.staticRenderFns
  67. });
  68. // can be called with component instance
  69. const vnode: VNode = compiledFns.render.call(vm);
  70. // check SFC parser
  71. const desc = parseComponent("<template></template>", {
  72. pad: "space",
  73. deindent: false
  74. });
  75. const templateContent: string = desc.template!.content;
  76. const scriptContent: string = desc.script!.content;
  77. const styleContent: string = desc.styles.map(s => s.content).join("\n");
  78. const codeframe: string = generateCodeFrame(`foobar`, 0, 4)