Exemplo n.º 1
0
    def __init__(self,
                 session,
                 assetManager=None,
                 compressionLevel=1,
                 formattingLevel=0):

        Console.info("Initializing OutputManager...")
        Console.indent()
        Console.info("Formatting Level: %s", formattingLevel)
        Console.info("Compression Level: %s", compressionLevel)

        self.__session = session

        self.__assetManager = assetManager
        self.__fileManager = FileManager(session)

        self.__scriptOptimization = Optimization()

        self.__compressGeneratedCode = False

        self.__kernelClasses = []

        if compressionLevel > 0:
            self.__scriptOptimization.enable("variables")
            self.__scriptOptimization.enable("declarations")

            self.__compressGeneratedCode = True

        if compressionLevel > 1:
            self.__scriptOptimization.enable("blocks")
            self.__scriptOptimization.enable("privates")

        self.__scriptFormatting = Formatting()

        if formattingLevel > 0:
            self.__scriptFormatting.enable("semicolon")
            self.__scriptFormatting.enable("comma")

        Console.outdent()
Exemplo n.º 2
0
def cacheManifest(session,
                  startClassName,
                  scripts=["script/application-%s.js"],
                  htmlfile="index.html",
                  kernel="script/kernel.js",
                  ignoreAssets=False):
    # Check for new jasy replacement system (1.1.0-rc4)
    if session.expandFileName("{{id}}") != "{{id}}":
        PREFIX = "{{prefix}}"
        HASH = "{{id}}"
    else:
        PREFIX = "$prefix"
        HASH = "$permutation"

    timestamp = time.strftime("%Y-%m-%d %H:%M:%S")
    appcache = """CACHE MANIFEST

# Jasy AppCache Manifest file
# Version: {version}

CACHE:
{htmlfile}
{kernel}
{scripts}
{assets}

NETWORK:
*"""

    htmlcache = '<!DOCTYPE html><html manifest="%s"></html>'
    assetManager = AssetManager(session).addBuildProfile()
    outputManager = OutputManager(session, assetManager)
    fileManager = FileManager(session)

    # Create an application cache file for each permutation
    for permutation in session.permutate():
        if ignoreAssets:
            assets = []
        else:
            classes = Resolver(session).addClassName(
                startClassName).getSortedClasses()
            assetConfig = json.loads(assetManager.export(classes))
            assets = filenamesFromAsset("", assetConfig["assets"],
                                        assetConfig["profiles"])

        # Set options
        if hasattr(permutation, "getId"):
            checksum = permutation.getId()
        else:
            checksum = session.expandFileName(
                HASH)  #instead of permutation.getChecksum()

        scriptFiles = []
        for script in scripts:
            scriptFiles.append(script % checksum)

        manifestFilename = "appcache-%s.manifest" % (checksum)
        fileManager.writeFile(
            PREFIX + "/" + manifestFilename,
            appcache.format(version=timestamp,
                            htmlfile=htmlfile,
                            kernel=kernel,
                            scripts="\n".join(scriptFiles),
                            assets="\n".join(assets)))

        fileManager.writeFile(PREFIX + "/index-%s.html" % (checksum),
                              htmlcache % manifestFilename)