Skip to content

fix jshint errors and warnings #148

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 26 additions & 0 deletions .jshintrc
Original file line number Diff line number Diff line change
@@ -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
}
112 changes: 65 additions & 47 deletions css-builder.js
Original file line number Diff line number Diff line change
@@ -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.');
Expand All @@ -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);
Expand All @@ -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();
Expand All @@ -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
Expand All @@ -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;

Expand All @@ -113,73 +123,81 @@ 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');

//add to the buffer
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;
});
Loading