Exemplo n.º 1
0
            reader.onload = function(e) {
                delete reader.onload;

                var filename = Path.join(StartupState.project("root"), item.name);
                var file = FileSystem.getFileForPath(filename);
                var ext = Path.extname(filename).toLowerCase();

                // Create a Filer Buffer, and determine the proper encoding. We
                // use the extension, and also the OS provided mime type for clues.
                var buffer = new Filer.Buffer(e.target.result);
                var utf8FromExt = Content.isUTF8Encoded(ext);
                var utf8FromOS = Content.isTextType(item.type);
                var encoding =  utf8FromExt || utf8FromOS ? 'utf8' : null;
                if(encoding === 'utf8') {
                    buffer = buffer.toString();
                }

                // Special-case .zip files, so we can offer to extract the contents
                if(ext === ".zip") {
                    handleZipFile(deferred, file, filename, buffer, encoding);
                } else if(ext === ".tar") {
                    handleTarFile(deferred, file, filename, buffer, encoding);
                } else {
                    handleRegularFile(deferred, file, filename, buffer, encoding);
                }
            };
Exemplo n.º 2
0
    /**
     * Process known files into Blob URLs, processing known types first
     * so they are rendered and rewritten (e.g., paths->blob urls) properly.
     */
    function handleFile(path, data, callback) {
        var ext = Path.extname(path);
        var mimeType = Content.mimeFromExt(ext);

        // NOTE: we call toString() on `data` so that only utf8 data is used if a
        // buffer was passed in as a parameter and should be read as utf8.
        if(Content.isUTF8Encoded(ext)) {
            data = data.toString();
        }

        function rewriteUrl() {
            if(Content.isHTML(ext)) {
                HTMLRewriter.rewrite(path, data, callback);
            } else if(Content.isCSS(ext)) {
                CSSRewriter.rewrite(path, data, function(err, css) {
                    if(err) {
                        console.error("[Handler.handleFile() Error", path, err);
                        callback(err);
                        return;
                    }
                    UrlCache.createURL(path, css, mimeType, callback);
                });
            } else {
                UrlCache.createURL(path, data, mimeType, callback);
            }
        }

        // If there's a transform needed for this file, do it first
        Transforms.applyTransform(path, data, function(err) {
            if(err) {
                return callback(err);
            }

            rewriteUrl();
        });
    }