From 7cbe6dc0d33e341b38badae187718016fc023309 Mon Sep 17 00:00:00 2001 From: mbektimirov Date: Sat, 26 Apr 2014 09:59:19 +0600 Subject: [PATCH] fix jshint errors and warnings --- .jshintrc | 26 ++++++++++++ css-builder.js | 112 ++++++++++++++++++++++++++++--------------------- css.js | 62 +++++++++++++++------------ normalize.js | 83 +++++++++++++++++++++--------------- 4 files changed, 176 insertions(+), 107 deletions(-) create mode 100644 .jshintrc diff --git a/.jshintrc b/.jshintrc new file mode 100644 index 0000000..7ea1d99 --- /dev/null +++ b/.jshintrc @@ -0,0 +1,26 @@ +{ + "predef": [ + "console", + "define" + ], + + "node": true, + "browser": true, + "es5": true, + "esnext": true, + "bitwise": true, + "camelcase": false, + "curly": true, + "eqeqeq": true, + "immed": true, + "latedef": true, + "newcap": true, + "noarg": true, + "quotmark": "single", + "regexp": true, + "undef": true, + "unused": true, + "strict": true, + "trailing": true, + "smarttabs": true +} diff --git a/css-builder.js b/css-builder.js index 474a901..f18708a 100644 --- a/css-builder.js +++ b/css-builder.js @@ -1,12 +1,18 @@ define(['require', './normalize'], function(req, normalize) { + 'use strict'; + + var fs = require.nodeRequire('fs'); + var path = require.nodeRequire('path'); var cssAPI = {}; - var isWindows = !!process.platform.match(/^win/); + var isNode = typeof process !== 'undefined' && process.versions && !!process.versions.node && require.nodeRequire; function compress(css) { - if (typeof process !== "undefined" && process.versions && !!process.versions.node && require.nodeRequire) { + if (isNode) { + var csso; + try { - var csso = require.nodeRequire('csso'); + csso = require.nodeRequire('csso'); } catch(e) { console.log('Compression module not installed. Use "npm install csso -g" to enable.'); @@ -26,26 +32,30 @@ define(['require', './normalize'], function(req, normalize) { console.log('Compression not supported outside of nodejs environments.'); return css; } - + //load file code - stolen from text plugin function loadFile(path) { - if (typeof process !== "undefined" && process.versions && !!process.versions.node && require.nodeRequire) { + var file; + + if (isNode) { var fs = require.nodeRequire('fs'); - var file = fs.readFileSync(path, 'utf8'); - if (file.indexOf('\uFEFF') === 0) + file = fs.readFileSync(path, 'utf8'); + if (file.indexOf('\uFEFF') === 0) { return file.substring(1); + } return file; } else { - var file = new java.io.File(path), - lineSeparator = java.lang.System.getProperty("line.separator"), + file = new java.io.File(path); + var lineSeparator = java.lang.System.getProperty('line.separator'), input = new java.io.BufferedReader(new java.io.InputStreamReader(new java.io.FileInputStream(file), 'utf-8')), stringBuffer, line; try { stringBuffer = new java.lang.StringBuffer(); line = input.readLine(); - if (line && line.length() && line.charAt(0) === 0xfeff) + if (line && line.length() && line.charAt(0) === 0xfeff) { line = line.substring(1); + } stringBuffer.append(line); while ((line = input.readLine()) !== null) { stringBuffer.append(lineSeparator).append(line); @@ -57,17 +67,17 @@ define(['require', './normalize'], function(req, normalize) { } } } - - + + function saveFile(path, data) { - if (typeof process !== "undefined" && process.versions && !!process.versions.node && require.nodeRequire) { + if (isNode) { var fs = require.nodeRequire('fs'); fs.writeFileSync(path, data, 'utf8'); } else { var content = new java.lang.String(data); var output = new java.io.BufferedWriter(new java.io.OutputStreamWriter(new java.io.FileOutputStream(path), 'utf-8')); - + try { output.write(content, 0, content.length()); output.flush(); @@ -77,16 +87,16 @@ define(['require', './normalize'], function(req, normalize) { } } } - + //when adding to the link buffer, paths are normalised to the baseUrl //when removing from the link buffer, paths are normalised to the output file path function escape(content) { return content.replace(/(["'\\])/g, '\\$1') - .replace(/[\f]/g, "\\f") - .replace(/[\b]/g, "\\b") - .replace(/[\n]/g, "\\n") - .replace(/[\t]/g, "\\t") - .replace(/[\r]/g, "\\r"); + .replace(/[\f]/g, '\\f') + .replace(/[\b]/g, '\\b') + .replace(/[\n]/g, '\\n') + .replace(/[\t]/g, '\\t') + .replace(/[\r]/g, '\\r'); } // NB add @media query support for media imports @@ -99,7 +109,7 @@ define(['require', './normalize'], function(req, normalize) { var baseParts = req.toUrl('base_url').split('/'); baseParts[baseParts.length - 1] = ''; var baseUrl = baseParts.join('/'); - + var curModule = 0; var config; @@ -113,13 +123,15 @@ define(['require', './normalize'], function(req, normalize) { if (!siteRoot) { siteRoot = path.resolve(config.dir || path.dirname(config.out), config.siteRoot || '.') + '/'; - if (isWindows) + if (isWindows) { siteRoot = siteRoot.replace(/\\/g, '/'); + } } //external URLS don't get added (just like JS requires) - if (name.match(absUrlRegEx)) + if (name.match(absUrlRegEx)) { return load(); + } var fileUrl = req.toUrl(name + '.css'); @@ -127,59 +139,65 @@ define(['require', './normalize'], function(req, normalize) { cssBuffer[name] = normalize(loadFile(fileUrl), isWindows ? fileUrl.replace(/\\/g, '/') : fileUrl, siteRoot); load(); - } - + }; + cssAPI.normalize = function(name, normalize) { - if (name.substr(name.length - 4, 4) == '.css') + if (name.substr(name.length - 4, 4) === '.css') { name = name.substr(0, name.length - 4); + } return normalize(name); - } - + }; + cssAPI.write = function(pluginName, moduleName, write, parse) { //external URLS don't get added (just like JS requires) - if (moduleName.match(absUrlRegEx)) + if (moduleName.match(absUrlRegEx)) { return; + } layerBuffer.push(cssBuffer[moduleName]); - - if (config.buildCSS != false) - write.asModule(pluginName + '!' + moduleName, 'define(function(){})'); - } - + + if (config.buildCSS !== false) { + write.asModule(pluginName + '!' + moduleName, 'define(function(){})'); + } + }; + cssAPI.onLayerEnd = function(write, data) { - if (config.separateCSS && config.IESelectorLimit) + if (config.separateCSS && config.IESelectorLimit) { throw 'RequireCSS: separateCSS option is not compatible with ensuring the IE selector limit'; + } if (config.separateCSS) { console.log('Writing CSS! file: ' + data.name + '\n'); - fs.mkdirSync(data.name) + fs.mkdirSync(data.name); var outPath = config.dir ? path.resolve(config.dir, config.baseUrl, data.name + '.css') : config.out.replace(/(\.js)?$/, '.css'); var css = layerBuffer.join(''); - if (fs.existsSync(outPath)) + if (fs.existsSync(outPath)) { console.log('RequireCSS: Warning, separateCSS module path "' + outPath + '" already exists and is being replaced by the layer CSS.'); + } process.nextTick(function() { - saveFile(outPath, compress(css)); + saveFile(outPath, compress(css)); }); - + } - else if (config.buildCSS != false) { + else if (config.buildCSS !== false) { var styles = config.IESelectorLimit ? layerBuffer : [layerBuffer.join('')]; for (var i = 0; i < styles.length; i++) { - if (styles[i] == '') + if (styles[i] === '') { return; + } write( - "(function(c){var d=document,a='appendChild',i='styleSheet',s=d.createElement('style');s.type='text/css';d.getElementsByTagName('head')[0][a](s);s[i]?s[i].cssText=c:s[a](d.createTextNode(c));})\n" - + "('" + escape(compress(styles[i])) + "');\n" - ); + '(function(c){var d=document,a=\'appendChild\',i=\'styleSheet\',s=d.createElement(\'style\');s.type=\'text/css\';d.getElementsByTagName(\'head\')[0][a](s);s[i]?s[i].cssText=c:s[a](d.createTextNode(c));})\n' + + "('" + escape(compress(styles[i])) + "');\n" + ); } - } + } //clear layer buffer for next layer layerBuffer = []; - } - + }; + return cssAPI; }); diff --git a/css.js b/css.js index 90bf411..8fcfc45 100644 --- a/css.js +++ b/css.js @@ -17,12 +17,12 @@ * Chome 3 - 26 * Firefox 3.5 - 19 * Opera 10 - 12 - * + * * browserling.com used for virtual testing environment * * Credit to B Cavalier & J Hann for the IE 6 - 9 method, * refined with help from Martin Cermak - * + * * Sources that helped along the way: * - https://developer.mozilla.org/en-US/docs/Browser_detection_using_the_user_agent * - http://www.phpied.com/when-is-a-stylesheet-really-loaded/ @@ -32,8 +32,11 @@ define(function() { //>>excludeStart('excludeRequireCss', pragmas.excludeRequireCss) - if (typeof window == 'undefined') - return { load: function(n, r, load){ load() } }; + 'use strict'; + + if (typeof window === 'undefined') { + return { load: function(n, r, load){ load(); } }; + } var head = document.getElementsByTagName('head')[0]; @@ -41,20 +44,23 @@ define(function() { // use