Beispiel #1
0
def generate_base64_file(path, filename, mode):
    if mode is None:
        mode = "css"
    else:
        mode = mode.lower()
    #declare pics traverser
    t = Traversers.PicsTraverser()

    pics = t.get_files(path)
    l = len(pics)
    if (l == 0):
        print("*" * 70)
        print("!!! no pictures found inside {}".format(path))
        print("*" * 70)
        return
    f = []

    for p in pics:
        # get extension
        ext = os.path.splitext(p)[1]
        name = os.path.basename(p)
        print("...processing picture {}".format(name))

        if mode == "css":
            f.append("/* picture: {} */".format(name))
            f.append(".{} {}".format(name.replace(".", "-"), "{"))

            # picture:
            with open(p, "rb") as image_file:
                b = base64.b64encode(image_file.read())
                # decode b to utf-8 to obtain a string from bytes
                f.append(
                    "\tbackground-image: url(\"data:{0};base64,{1}\");".format(
                        get_descriptor_by_extension(ext), b.decode("utf-8")))

            f.append("}")
        elif mode == "csv":
            with open(p, "rb") as image_file:
                b = base64.b64encode(image_file.read())
                # decode b to utf-8 to obtain a string from bytes
                f.append("{},{}".format(name, b.decode("utf-8")))

    #save css file
    code = "\n".join(f)
    outputPath = os.path.join(path, filename) + "." + mode
    print("...saving file to {}".format(outputPath))
    Scribe.write(code, outputPath)
    def get_all(self):
        """Gets the complete list of colors."""
        if self._collection is None:
            file_path = self.get_data_path()

            # read the colors.json file (this simulates the data access, without data access layer)
            file_data = Scribe.read(file_path)
            self._collection = json.loads(file_data)

        return self._collection
Beispiel #3
0
    def get_all(self):
        """Gets the complete list of colors."""
        if self._collection is None:
            file_path = self.get_data_path()

            # read the colors.json file (this simulates the data access, without data access layer)
            file_data = Scribe.read(file_path)
            self._collection = json.loads(file_data)

        return self._collection
Beispiel #4
0
def load_resources_config():
    """
    Loads the resources configuration.
    """
    try:
        base_path = path.abspath(path.join(path.dirname(__file__), pardir))
        scripts_config = path.join(base_path, "configuration", "scripts.js")
        contents = Scribe.read(scripts_config)
        # extract the information that we care about
        contents = remove_comments(contents).replace("module.exports = {", "{")
        contents = Text.remove_line_breaks(contents)
        contents = re.sub(";\s*$", "", contents)
        data = json.loads(contents)
        return data
    except Exception as ex:
        print("ERROR: while loading the scripts configuration for the resources helper.")
        print(str(ex))
        raise
def load_resources_config():
    """
    Loads the resources configuration.
    :rtype : object
    """
    try:
        base_path = path.abspath(path.join(path.dirname(__file__), pardir))
        scripts_config = path.join(base_path, "configuration", "scripts.js")
        contents = Scribe.read(scripts_config)
        # extract the information that we care about
        contents = remove_comments(contents).replace("module.exports = {", "{")
        contents = Text.remove_line_breaks(contents)
        contents = re.sub(";\s*$", "", contents)
        data = json.loads(contents)
        return data
    except Exception as ex:
        print("ERROR: while loading the scripts configuration for the resources helper.")
        print(ex.message)
        raise
Beispiel #6
0
def get_templates_for_angular(path, all_html_files, appname, underscore_js_compile, comment):
    """
        Creates templates.js files for AngularJs
    """
    f = []
    pat = r"<!--template=\"([a-zA-Z0-9\\-]+)\"-->"
    f.append("//")
    f.append("//Knight generated templates file.")
    if comment is not None:
        f.append("// * ")
        f.append("// * " + comment)
        f.append("// * ")
    f.append("//")
    f.append("(function () {")

    f.append("  var o = {")
    k = len(all_html_files)
    i = 0
    for h in all_html_files:
        i += 1
        # get file content
        txt = Scribe.read(h)

        # check if the rx matches the contents
        m = re.search(pat, txt)
        if m:
            # get the template name from the group
            name = m.group(1)
            # remove the template name comment
            txt = re.sub(pat, "", txt)
        else:
            # get the filename with extension
            name = os.path.basename(h)
            # remove extension
            name = os.path.splitext(name)[0]

        # escape single quotes
        txt = re.sub("'", "\\'", txt)
        # condensate
        txt = Text.condensate(txt)

        f.append("    \'{0}\': \'{1}\'{2}".format(name, txt, "," if i < k else ""))
        
    f.append("  };")

    f.append("  var f = function(a) {")
    if underscore_js_compile is None or underscore_js_compile == "":
        #plain templates
        f.append("    var x;")
        f.append("    for (x in o) {")
        f.append("      a.put(x, o[x]);")
        f.append("    }")
    else:
        #templates run into UnderscoreJs template function
        f.append("    var ctx = {};".format(underscore_js_compile))
        f.append("    _.each(o, function (v, k) {")
        f.append("      a.put(k, _.template(v, ctx));")
        f.append("    });")

    f.append("  };")
    f.append("  f.$inject = ['$templateCache'];")
    f.append("  {0}.run(f);".format(appname))
    f.append("})();")

    code = "\n".join(f)
    # save templates.js
    outputPath = os.path.join(path, "templates.js")
    print("...saving file {}".format(outputPath))
    Scribe.write(code, outputPath)
Beispiel #7
0
def get_templates_for_angular(path, all_html_files, appname,
                              underscore_js_compile, comment):
    """
        Creates templates.js files for AngularJs
    """
    f = []
    pat = r"<!--template=\"([a-zA-Z0-9\\-]+)\"-->"
    f.append("//")
    f.append("//Knight generated templates file.")
    if comment is not None:
        f.append("// * ")
        f.append("// * " + comment)
        f.append("// * ")
    f.append("//")
    f.append("(function () {")

    f.append("  var o = {")
    k = len(all_html_files)
    i = 0
    for h in all_html_files:
        i += 1
        # get file content
        txt = Scribe.read(h)

        # check if the rx matches the contents
        m = re.search(pat, txt)
        if m:
            # get the template name from the group
            name = m.group(1)
            # remove the template name comment
            txt = re.sub(pat, "", txt)
        else:
            # get the filename with extension
            name = os.path.basename(h)
            # remove extension
            name = os.path.splitext(name)[0]

        # escape single quotes
        txt = re.sub("'", "\\'", txt)
        # condensate
        txt = Text.condensate(txt)

        f.append("    \'{0}\': \'{1}\'{2}".format(name, txt,
                                                  "," if i < k else ""))

    f.append("  };")

    f.append("  var f = function(a) {")
    if underscore_js_compile is None or underscore_js_compile == "":
        #plain templates
        f.append("    var x;")
        f.append("    for (x in o) {")
        f.append("      a.put(x, o[x]);")
        f.append("    }")
    else:
        #templates run into UnderscoreJs template function
        f.append("    var ctx = {};".format(underscore_js_compile))
        f.append("    _.each(o, function (v, k) {")
        f.append("      a.put(k, _.template(v, ctx));")
        f.append("    });")

    f.append("  };")
    f.append("  f.$inject = ['$templateCache'];")
    f.append("  {0}.run(f);".format(appname))
    f.append("})();")

    code = "\n".join(f)
    # save templates.js
    outputPath = os.path.join(path, "templates.js")
    print("...saving file {}".format(outputPath))
    Scribe.write(code, outputPath)
def get_templates(path, all_html_files, underscore_js_compile, templates_variable, comment):
    """
        Creates templates.js files for KnockOut
    """
    f = []
    pat = r"<!--template=\"([a-zA-Z0-9\\-]+)\"-->"
    f.append("//")
    f.append("//Knight generated templates file.")
    if comment is not None:
        f.append("// * ")
        f.append("// * " + comment)
        f.append("// * ")
    f.append("//")
    f.append("if (!" + templates_variable + ") " + templates_variable + " = {};")
    f.append("(function (templates) {")

    f.append("  var o = {")

    k = len(all_html_files)
    i = 0
    for h in all_html_files:
        i += 1
        # get file content
        txt = Scribe.read(h)

        # check if the rx matches the contents
        m = re.search(pat, txt)
        if m:
            # get the template name from the group
            name = m.group(1)
            # remove the template name comment
            txt = re.sub(pat, "", txt)
        else:
            # get the filename with extension
            name = os.path.basename(h)
            # remove extension
            name = os.path.splitext(name)[0]

        # escape single quotes
        txt = re.sub("'", "\\'", txt)

        # condensate
        txt = Text.condensate(txt)

        f.append("    '{}': '{}'{}".format(name, txt, "," if i < k else ""))

    f.append("  };")

    if underscore_js_compile is None or underscore_js_compile == "":
        # plain templates
        f.append("  var x;")
        f.append("  for (x in o) {")
        f.append("    templates[x] = o[x];")
        f.append("  }")
    else:
        # templates run into UnderscoreJs template function
        f.append("  var ctx = {};".format(underscore_js_compile))
        f.append("  _.each(o, function (v, k) {")
        f.append("    x[k] = _.template(v, ctx);")
        f.append("  });")

    f.append("})(" + templates_variable + ");")

    code = "\n".join(f)

    # save templates.js
    outputPath = os.path.join(path, "templates.js")
    print("...saving file {}".format(outputPath))
    Scribe.write(code, outputPath)