+15
| { | ||
| "env": { | ||
| "node": true, | ||
| "browser": true, | ||
| "mocha": true | ||
| }, | ||
| "rules": { | ||
| "quotes": [1, "single", "avoid-escape"], | ||
| "global-strict": [1, "always"], | ||
| "no-extra-strict": true, | ||
| "no-extra-semi": 2, | ||
| "semi": [2, "never"], | ||
| "camelcase": false | ||
| } | ||
| } |
+1
-2
| language: node_js | ||
| node_js: | ||
| - "0.11" | ||
| - "0.10" | ||
| before_script: | ||
| - npm install -g gulp | ||
| script: gulp | ||
| script: gulp build |
+19
-34
@@ -1,27 +0,7 @@ | ||
| var gulp = require('gulp'); | ||
| var del = require('del'); | ||
| var gutil = require('gulp-util'); | ||
| var mocha = require('gulp-mocha'); | ||
| var runSequence = require('run-sequence'); | ||
| 'use strict' | ||
| var gulp = require('gulp') | ||
| var mocha = require('gulp-mocha') | ||
| var runSequence = require('run-sequence') | ||
| var eslint = require('gulp-eslint') | ||
| var coffee = require('gulp-coffee'); | ||
| gulp.task('clean', function (cb) { | ||
| del([ | ||
| 'lib/**' | ||
| ], cb); | ||
| }); | ||
| gulp.task('coffee', function() { | ||
| return gulp.src('./src/**/*.coffee') | ||
| .pipe(coffee({bare: true}).on('error', gutil.log)) | ||
| .pipe(gulp.dest('./lib/')) | ||
| }); | ||
| gulp.task('copy-templates', function(){ | ||
| return gulp.src('./src/**/*.hbs') | ||
| .pipe(gulp.dest('./lib/')); | ||
| }); | ||
| gulp.task('test', function(){ | ||
@@ -35,13 +15,18 @@ gulp.src('./test/*spec.js') | ||
| } | ||
| )); | ||
| }); | ||
| )) | ||
| }) | ||
| gulp.task('lint', function () { | ||
| return gulp.src(['**/*.js']) | ||
| .pipe(eslint('./.eslintrc')) | ||
| .pipe(eslint.format()) | ||
| .pipe(eslint.failOnError()) | ||
| }) | ||
| gulp.task('build', function(callback) { | ||
| runSequence('clean', | ||
| ['copy-templates', 'coffee'], | ||
| 'test', | ||
| callback); | ||
| }); | ||
| runSequence('test', 'lint', | ||
| callback) | ||
| }) | ||
| gulp.task('default', ['build']); | ||
| gulp.task('default', ['build']) |
+83
-32
@@ -1,42 +0,93 @@ | ||
| var Handlebars; | ||
| 'use strict' | ||
| var Handlebars = require('handlebars') | ||
| Handlebars = require("handlebars"); | ||
| var processParsers = function(tmpl, gen, data){ | ||
| var sdata = JSON.parse(JSON.stringify(data)) | ||
| var parsed | ||
| if(typeof tmpl === 'function'){ | ||
| if(typeof gen.parser === 'function'){ | ||
| parsed = gen.parser(sdata) | ||
| }else{ | ||
| parsed = sdata | ||
| } | ||
| }else if(typeof tmpl === 'object'){ | ||
| if(typeof tmpl.parser === 'function'){ | ||
| parsed = tmpl.parser(sdata) | ||
| }else{ | ||
| parsed = sdata | ||
| } | ||
| } | ||
| return parsed | ||
| } | ||
| var compileTemplate = function(tmpl){ | ||
| if(typeof tmpl === 'function'){ | ||
| return tmpl | ||
| }else if(typeof tmpl === 'string') { | ||
| return Handlebars.compile(tmpl) | ||
| }else if(typeof tmpl === 'object'){ | ||
| tmpl.tmpl = compileTemplate(tmpl.tmpl) | ||
| return tmpl | ||
| } | ||
| } | ||
| var handleTemplates = function(tmpls){ | ||
| var templates = [] | ||
| if(tmpls === undefined){ | ||
| return templates | ||
| } | ||
| if(Array.isArray(tmpls)){ | ||
| tmpls.forEach(function(def){ | ||
| templates.push(compileTemplate(def)) | ||
| }) | ||
| }else{ | ||
| throw new Error('gen.templates must be array') | ||
| } | ||
| return templates | ||
| } | ||
| var bindTemplate = function(tmplDef, data, options){ | ||
| var htmpl = tmplDef | ||
| if(typeof tmplDef === 'object'){ | ||
| htmpl = tmplDef.tmpl | ||
| } | ||
| var result = {} | ||
| var key = Object.keys(data)[0] | ||
| result[key] = htmpl(data[key], options) | ||
| return result | ||
| } | ||
| module.exports.process = function(data, gen) { | ||
| var dataParsed, key, obj, options, result, results, template, _i, _len; | ||
| if (gen.handleRender && typeof gen.handleRender === 'function') { | ||
| if (typeof gen.parser === 'function') { | ||
| dataParsed = gen.parser(data); | ||
| } else { | ||
| dataParsed = data; | ||
| var templates = [] | ||
| if(gen.template !== undefined){ | ||
| templates = templates.concat(compileTemplate(gen.template)) | ||
| } | ||
| if (typeof gen.template !== "function") { | ||
| template = Handlebars.compile(gen.template); | ||
| } else { | ||
| template = gen.template; | ||
| } | ||
| options = { | ||
| templates = templates.concat(handleTemplates(gen.templates)) | ||
| var options = { | ||
| helpers: gen.helpers, | ||
| partials: gen.partials | ||
| }; | ||
| if (Array.isArray(dataParsed)) { | ||
| results = []; | ||
| for (_i = 0, _len = dataParsed.length; _i < _len; _i++) { | ||
| obj = dataParsed[_i]; | ||
| key = Object.keys(obj)[0]; | ||
| if (key && obj[key]) { | ||
| result = {}; | ||
| result[key] = template(obj[key], options); | ||
| results.push(result); | ||
| } else { | ||
| throw new Error("Data element doesn't have name or model"); | ||
| } | ||
| } | ||
| var results = [] | ||
| templates.forEach(function(template){ | ||
| var dataParsed = processParsers(template, gen, data) | ||
| if (Array.isArray(dataParsed)) { | ||
| dataParsed.forEach(function(dato){ | ||
| results.push(bindTemplate(template, dato, options)) | ||
| }) | ||
| } else { | ||
| results.push(bindTemplate(template, dataParsed, options)) | ||
| } | ||
| return gen.handleRender(results); | ||
| } else { | ||
| throw new Error("Digest data is not and Array"); | ||
| } | ||
| }) | ||
| gen.handleRender(results) | ||
| } else { | ||
| throw new Error("generator.handleRender not defined"); | ||
| throw new Error('generator.handleRender not defined') | ||
| } | ||
| }; | ||
| } |
+7
-5
| { | ||
| "name": "data2code", | ||
| "version": "0.0.4", | ||
| "version": "0.0.5", | ||
| "description": "Codegenerator for data", | ||
@@ -10,10 +10,12 @@ "main": "lib/data2code.js", | ||
| "devDependencies": { | ||
| "gulp": "3.8.10", | ||
| "gulp-coffee": "2.2.0", | ||
| "gulp-mocha" : "1.0.0", | ||
| "chai": "~1.9.1", | ||
| "del": "^1.1.1", | ||
| "eslint": "^0.15.1", | ||
| "gulp": "3.8.10", | ||
| "gulp-eslint": "^0.5.0", | ||
| "gulp-mocha": "1.0.0", | ||
| "gulp-util": "3.0.1", | ||
| "lodash": "^3.3.1", | ||
| "mocha": "~1.20.1", | ||
| "raml-parser": "0.8.7", | ||
| "gulp-util": "3.0.1", | ||
| "run-sequence": "^1.0.2" | ||
@@ -20,0 +22,0 @@ }, |
+6
-1
@@ -43,7 +43,12 @@ # data to code generator | ||
| simpleGen.template = '{{title}}'; | ||
| simpleGen.parser = function(){ | ||
| } | ||
| var handleRender = function (result) { | ||
| console.log(result); | ||
| } | ||
| Or to use multiple templates | ||
| var simpleGen = {} | ||
| simpleGen.templates = [{tmpl: "{title}", parser: function }] | ||
| raml.loadFile('myAPI.raml').then( function(data){ | ||
@@ -50,0 +55,0 @@ data2Code.process(data, simpleGen); |
5728
25.23%7
16.67%107
38.96%60
9.09%11
22.22%