GithubHelp home page GithubHelp logo

krakenjs / makara-builder Goto Github PK

View Code? Open in Web Editor NEW
0.0 10.0 3.0 10 KB

Builder module for cycling through locale directories and orchestrating output into client-consumable languagepack files.

JavaScript 100.00%

makara-builder's Introduction

makara-builder

Build Status

Identify all locales under a given directory and call a passed in "writer" for each one

API

module.exports = function build(appRoot, writer, cb) {

  • appRoot {String} filesystem directory where locales directory resides. Under that would be structure e.g. US/en, XC/zh
  • writer {Function}
    • localeRoot {String} root output directory for the given locale
    • @returns {Function}
      • locale {String} locale string e.g. DE-fr
      • cb {Function} errback
  • cb {Function} called with error or upon successful writing of all locales

makara-builder will use spundle to convert all localized .properties files to JSON objects, create the target directory structure for built languagepack files, and then call the passed in writer for each locale.

The writer will wrap the JSON output as necessary, and write the languagepack file to localeRoot. An example of a writer function is that found in makara-amdify:

'use strict';

var path = require('path');
var fs = require('fs');

var wrap = function (out) {
	return 'define("_languagepack", function () { return ' + JSON.stringify(out) + '; });';
};

var writer = function (outputRoot, cb) {
	return function (out) {
		fs.writeFile(path.resolve(outputRoot, '_languagepack.js'), wrap(out), cb);
	};
};

module.exports = function build(root, cb) {
	require('makara-builder')(root, writer, cb);
};

makara-builder's People

Contributors

gabrielcsapo avatar grawk avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

makara-builder's Issues

Build task on windows fails due to OS path separator issue

The grunt-makara-amdify 1.0.1 uses the makara-builder 1.0.0 and in makara-builder/index.js I can see:

var locales = paths.map(function (p) {
    var m = /(.*)\/(.*)/.exec(path.relative(localeRoot, p));
    return m[2] + '-' + m[1];
});

localeRoot="...\locales" and p="...locales/DE/de"

The path.relative() call transforms p into windows style and returns "DE\de".
The reg ex evaluation returns null because of the hardcoded linux path sep.
The following line gives of course "Fatal error: Cannot read property '2' of null".

Any hint for a workaround? Beside "use linux" ... ;-)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.