{
  "file": "lib/logger.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><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\n<span class=\"token keyword\">function</span> <span class=\"token function\">log</span><span class=\"token punctuation\">(</span>message<span class=\"token punctuation\">,</span> line<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  console<span class=\"token punctuation\">.</span><span class=\"token function\">warn</span><span class=\"token punctuation\">(</span><span class=\"token template-string\"><span class=\"token string\">`</span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${</span>message<span class=\"token interpolation-punctuation punctuation\">}</span></span><span class=\"token string\">,</span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${</span>line<span class=\"token interpolation-punctuation punctuation\">}</span></span><span class=\"token string\">`</span></span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token comment\" spellcheck=\"true\">/**\n * Logger method that takes in YUIDoc warnings array and checks those warnings\n * against special features that we support. This allows us to use special tags\n * for Ember apps, and still support logging for incorrect tags, but suppress\n * warnings for unknown tags we have added\n * @class logger\n * @constructor\n * @param {Object} options Contains logger options and data to handle\n * @param {Array} options.warnings      YUIDoc generated warnings array of type: `{ message, line }`\n * @param {Array} options.whiteListTags Tags whitelisted for support in Ember Fountainhead\n */</span>\nmodule<span class=\"token punctuation\">.</span>exports <span class=\"token operator\">=</span> <span class=\"token keyword\">function</span> <span class=\"token function\">logger</span><span class=\"token punctuation\">(</span>options<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token keyword\">let</span> warnings <span class=\"token operator\">=</span> options<span class=\"token punctuation\">.</span>warnings <span class=\"token operator\">||</span> <span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n  <span class=\"token keyword\">let</span> whiteListTags <span class=\"token operator\">=</span> options<span class=\"token punctuation\">.</span>whiteListTags <span class=\"token operator\">||</span> <span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n\n  warnings<span class=\"token punctuation\">.</span><span class=\"token function\">forEach</span><span class=\"token punctuation\">(</span>warning <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token punctuation\">{</span>\n\n    <span class=\"token comment\" spellcheck=\"true\">// Check if warning is for an unkown tag, and if it is, check if the tag is</span>\n    <span class=\"token comment\" spellcheck=\"true\">// white listed</span>\n    <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>warning<span class=\"token punctuation\">.</span>message<span class=\"token punctuation\">.</span><span class=\"token function\">includes</span><span class=\"token punctuation\">(</span><span class=\"token string\">'unknown tag'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n      <span class=\"token keyword\">let</span> tag <span class=\"token operator\">=</span> <span class=\"token regex\">/unknown tag: (.*)/</span><span class=\"token punctuation\">.</span><span class=\"token function\">exec</span><span class=\"token punctuation\">(</span>warning<span class=\"token punctuation\">.</span>message<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n      <span class=\"token comment\" spellcheck=\"true\">// If a tag wasn't found, we don't know what this is so just log it</span>\n      <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span><span class=\"token operator\">!</span>tag<span class=\"token punctuation\">.</span>length<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token keyword\">return</span> <span class=\"token function\">log</span><span class=\"token punctuation\">(</span>warning<span class=\"token punctuation\">.</span>message<span class=\"token punctuation\">,</span> warning<span class=\"token punctuation\">.</span>line<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n      <span class=\"token punctuation\">}</span>\n\n      <span class=\"token comment\" spellcheck=\"true\">// If the tag is white listed, don't log it</span>\n      <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>whiteListTags<span class=\"token punctuation\">.</span><span class=\"token function\">includes</span><span class=\"token punctuation\">(</span>tag<span class=\"token punctuation\">[</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span> <span class=\"token keyword\">return</span><span class=\"token punctuation\">;</span> <span class=\"token punctuation\">}</span>\n\n      <span class=\"token comment\" spellcheck=\"true\">// Unknown tag that isn't whitelisted, log it</span>\n      <span class=\"token keyword\">return</span> <span class=\"token function\">log</span><span class=\"token punctuation\">(</span>warning<span class=\"token punctuation\">.</span>message<span class=\"token punctuation\">,</span> warning<span class=\"token punctuation\">.</span>line<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n\n    <span class=\"token comment\" spellcheck=\"true\">// End of the line, log the message</span>\n    <span class=\"token function\">log</span><span class=\"token punctuation\">(</span>warning<span class=\"token punctuation\">.</span>message<span class=\"token punctuation\">,</span> warning<span class=\"token punctuation\">.</span>line<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span>\n</code></pre>"
}