{
  "file": "lib/data-types/generate-src-file.js",
  "content": "<pre class=\"language-javascript line-numbers\"><code class=\"language-javascript}\"><span aria-hidden=\"true\" role=\"presentation\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span><span class=\"token string\">'use strict'</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">const</span> Prism <span class=\"token operator\">=</span> <span class=\"token function\">require</span><span class=\"token punctuation\">(</span><span class=\"token string\">'prismjs'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token function\">require</span><span class=\"token punctuation\">(</span><span class=\"token string\">'prismjs/components/prism-handlebars'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token comment\" spellcheck=\"true\">/**\n * Handle syntax highlighting and creating meta information for a src file\n * @class DataTypes.GenerateSrcFile\n * @constructor\n * @param {string} filePath File filepath from class definition\n */</span>\nmodule<span class=\"token punctuation\">.</span>exports <span class=\"token operator\">=</span> <span class=\"token keyword\">function</span> <span class=\"token function\">generateFile</span><span class=\"token punctuation\">(</span>srcFile<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token keyword\">try</span> <span class=\"token punctuation\">{</span>\n    srcFile <span class=\"token operator\">=</span>\n    <span class=\"token template-string\"><span class=\"token string\">`&lt;pre class=\\\"language-javascript line-numbers\\\">&lt;code class=\\\"language-javascript}\\\"></span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${</span>Prism<span class=\"token punctuation\">.</span><span class=\"token function\">highlight</span><span class=\"token punctuation\">(</span>\n      srcFile<span class=\"token punctuation\">,</span> Prism<span class=\"token punctuation\">.</span>languages<span class=\"token punctuation\">.</span>javascript\n    <span class=\"token punctuation\">)</span><span class=\"token interpolation-punctuation punctuation\">}</span></span><span class=\"token string\">&lt;/code>&lt;/pre>`</span></span><span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span> <span class=\"token keyword\">catch</span><span class=\"token punctuation\">(</span>ex<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">return</span> console<span class=\"token punctuation\">.</span><span class=\"token function\">warn</span><span class=\"token punctuation\">(</span><span class=\"token string\">'Failed parsing file src file'</span><span class=\"token punctuation\">,</span> ex<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span>\n\n  <span class=\"token comment\" spellcheck=\"true\">// Making some line numbers for now b/c Prism line numbers doesn't support Node</span>\n  <span class=\"token keyword\">let</span> fileLines <span class=\"token operator\">=</span> srcFile<span class=\"token punctuation\">.</span><span class=\"token function\">match</span><span class=\"token punctuation\">(</span><span class=\"token regex\">/\\n(?!$)/g</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n  fileLines <span class=\"token operator\">=</span> fileLines <span class=\"token operator\">?</span> fileLines<span class=\"token punctuation\">.</span>length <span class=\"token operator\">+</span> <span class=\"token number\">1</span> <span class=\"token punctuation\">:</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n\n  <span class=\"token keyword\">let</span> linesSpan <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">Array</span><span class=\"token punctuation\">(</span>fileLines<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  linesSpan <span class=\"token operator\">=</span> linesSpan<span class=\"token punctuation\">.</span><span class=\"token function\">join</span><span class=\"token punctuation\">(</span><span class=\"token string\">'&lt;span>&lt;/span>'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n  srcFile <span class=\"token operator\">=</span> srcFile<span class=\"token punctuation\">.</span><span class=\"token function\">replace</span><span class=\"token punctuation\">(</span><span class=\"token regex\">/&lt;code\\s\\S*>/</span><span class=\"token punctuation\">,</span>\n    <span class=\"token template-string\"><span class=\"token string\">`&lt;code class=\\\"language-javascript}\\\">&lt;span aria-hidden=\\\"true\\\" role=\\\"presentation\\\" class=\\\"line-numbers-rows\\\"></span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${</span>linesSpan<span class=\"token interpolation-punctuation punctuation\">}</span></span><span class=\"token string\">&lt;/span>`</span></span>\n  <span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n  <span class=\"token keyword\">return</span> srcFile<span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span>\n</code></pre>"
}