appmake 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.md +4 -0
- data/appmake.gemspec +1 -1
- data/bin/appmake +0 -0
- data/lib/appmake/listeners/js.rb +1 -1
- data/lib/appmake/listeners/tpl.rb +2 -2
- data/lib/appmake/version.rb +1 -1
- data/lib/appmake.rb +7 -6
- data/templates/README.md.tt +3 -0
- data/templates/package.json.tt +16 -0
- metadata +5 -4
- data/templates/bin/compile_templates.js.tt +0 -64
- data/templates/js/lib/doT.js.tt +0 -135
data/README.md
CHANGED
@@ -28,3 +28,7 @@ Run `bundle exec appmake init` to bootstrap app directory structure. Next issue
|
|
28
28
|
3. Commit your changes (`git commit -am 'Add some feature'`)
|
29
29
|
4. Push to the branch (`git push origin my-new-feature`)
|
30
30
|
5. Create new Pull Request
|
31
|
+
|
32
|
+
## Authors
|
33
|
+
|
34
|
+
**appmake** is being developed by Sebastian Sito and Sławomir Kołodziej
|
data/appmake.gemspec
CHANGED
@@ -6,7 +6,7 @@ require 'appmake/version'
|
|
6
6
|
Gem::Specification.new do |gem|
|
7
7
|
gem.name = "appmake"
|
8
8
|
gem.version = Appmake::VERSION
|
9
|
-
gem.authors = ["Sebastian Sito"]
|
9
|
+
gem.authors = ["Sebastian Sito", "Sławomir Kołodziej"]
|
10
10
|
gem.email = ["sebastian@hypenode.com"]
|
11
11
|
gem.description = %q{Appmake allows you to easily develop single-page apps in HTML5}
|
12
12
|
gem.summary = %q{Appmake app bootstrapper}
|
data/bin/appmake
CHANGED
File without changes
|
data/lib/appmake/listeners/js.rb
CHANGED
data/lib/appmake/version.rb
CHANGED
data/lib/appmake.rb
CHANGED
@@ -14,16 +14,16 @@ module Appmake
|
|
14
14
|
|
15
15
|
desc "init", "initialize new application"
|
16
16
|
def init
|
17
|
-
|
18
|
-
template"templates/
|
17
|
+
template "templates/package.json.tt", "package.json"
|
18
|
+
template "templates/README.md.tt", "README.md"
|
19
|
+
system "npm install"
|
19
20
|
|
20
21
|
empty_directory "css"
|
21
|
-
template"templates/css/app.scss.tt", "css/app.scss"
|
22
|
-
template"templates/css/body.scss.tt", "css/body.scss"
|
22
|
+
template "templates/css/app.scss.tt", "css/app.scss"
|
23
|
+
template "templates/css/body.scss.tt", "css/body.scss"
|
23
24
|
|
24
25
|
empty_directory "js"
|
25
|
-
template"templates/js/
|
26
|
-
template"templates/js/app.js.tt", "js/app.js"
|
26
|
+
template "templates/js/app.js.tt", "js/app.js"
|
27
27
|
|
28
28
|
empty_directory "tpl"
|
29
29
|
template "templates/tpl/welcome.html.tt", "tpl/welcome.html"
|
@@ -31,6 +31,7 @@ module Appmake
|
|
31
31
|
empty_directory "public"
|
32
32
|
template "templates/public/index.html.tt", "public/index.html"
|
33
33
|
|
34
|
+
|
34
35
|
Listeners::Css.compile
|
35
36
|
Listeners::Tpl.compile
|
36
37
|
Listeners::Js.compile
|
@@ -0,0 +1,16 @@
|
|
1
|
+
{
|
2
|
+
"name": "myapp",
|
3
|
+
"author": "",
|
4
|
+
"version": "0.0.1",
|
5
|
+
"preferGlobal": "true",
|
6
|
+
"dependencies": {
|
7
|
+
"webmake": ">= 0.3.14",
|
8
|
+
"dot-module": ">= 0.0.1"
|
9
|
+
},
|
10
|
+
"scripts": {
|
11
|
+
"tpl": "dot-module -d tpl/ -o js/templates.js",
|
12
|
+
"build": "webmake js/app.js public/app.js --sourcemap",
|
13
|
+
"deploy": "webmake js/app.js public/app.js"
|
14
|
+
},
|
15
|
+
"engines": { "node": "*" }
|
16
|
+
}
|
metadata
CHANGED
@@ -1,15 +1,16 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: appmake
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Sebastian Sito
|
9
|
+
- Sławomir Kołodziej
|
9
10
|
autorequire:
|
10
11
|
bindir: bin
|
11
12
|
cert_chain: []
|
12
|
-
date: 2013-01-
|
13
|
+
date: 2013-01-20 00:00:00.000000000 Z
|
13
14
|
dependencies:
|
14
15
|
- !ruby/object:Gem::Dependency
|
15
16
|
name: thor
|
@@ -95,11 +96,11 @@ files:
|
|
95
96
|
- lib/appmake/listeners/js.rb
|
96
97
|
- lib/appmake/listeners/tpl.rb
|
97
98
|
- lib/appmake/version.rb
|
98
|
-
- templates/
|
99
|
+
- templates/README.md.tt
|
99
100
|
- templates/css/app.scss.tt
|
100
101
|
- templates/css/body.scss.tt
|
101
102
|
- templates/js/app.js.tt
|
102
|
-
- templates/
|
103
|
+
- templates/package.json.tt
|
103
104
|
- templates/public/index.html.tt
|
104
105
|
- templates/tpl/welcome.html.tt
|
105
106
|
homepage: https://github.com/sebastiansito/appmake
|
@@ -1,64 +0,0 @@
|
|
1
|
-
var app_dir = __dirname + '/../',
|
2
|
-
tpl_dir = app_dir + 'tpl/',
|
3
|
-
js_dir = app_dir + 'js/',
|
4
|
-
|
5
|
-
fs = require('fs'),
|
6
|
-
dot = require('../js/lib/doT.js'),
|
7
|
-
|
8
|
-
templates = {};
|
9
|
-
|
10
|
-
walk();
|
11
|
-
fs.writeFile(js_dir + 'templates.js', buildModule(templates));
|
12
|
-
|
13
|
-
|
14
|
-
function walk(subdir) {
|
15
|
-
var dir = tpl_dir,
|
16
|
-
files;
|
17
|
-
|
18
|
-
if (subdir)
|
19
|
-
dir += subdir;
|
20
|
-
|
21
|
-
files = fs.readdirSync(dir);
|
22
|
-
files.forEach(function (filename) {
|
23
|
-
var stats = fs.statSync(dir + filename);
|
24
|
-
|
25
|
-
if (stats.isDirectory()) {
|
26
|
-
if (subdir) filename = subdir + filename;
|
27
|
-
filename += '/';
|
28
|
-
|
29
|
-
walk(filename);
|
30
|
-
}
|
31
|
-
|
32
|
-
if (!isHTML(filename))
|
33
|
-
return;
|
34
|
-
|
35
|
-
readFile(filename, subdir, fs.readFileSync(dir + filename));
|
36
|
-
});
|
37
|
-
}
|
38
|
-
|
39
|
-
function readFile (filename, dir, data) {
|
40
|
-
var name = filename.split('.').slice(0, -1).join('.'),
|
41
|
-
compiled = dot.template(data).toString().replace(/^function anonymous/, 'function ');
|
42
|
-
|
43
|
-
if (dir)
|
44
|
-
name = dir + name;
|
45
|
-
|
46
|
-
templates[name] = compiled;
|
47
|
-
}
|
48
|
-
|
49
|
-
function isHTML(name) {
|
50
|
-
if (!~name.indexOf('.'))
|
51
|
-
return false;
|
52
|
-
|
53
|
-
return name.split('.').slice(-1)[0].toLowerCase() === 'html';
|
54
|
-
}
|
55
|
-
|
56
|
-
function buildModule() {
|
57
|
-
var content = [],
|
58
|
-
n;
|
59
|
-
|
60
|
-
for (n in templates)
|
61
|
-
content.push('"' + n + '": ' + templates[n]);
|
62
|
-
|
63
|
-
return ['module.exports = {', content.join(','), '};'].join('').replace(/(\n|\r|\r\n)/, '');
|
64
|
-
}
|
data/templates/js/lib/doT.js.tt
DELETED
@@ -1,135 +0,0 @@
|
|
1
|
-
// doT.js
|
2
|
-
// 2011, Laura Doktorova, https://github.com/olado/doT
|
3
|
-
// Licensed under the MIT license.
|
4
|
-
|
5
|
-
(function() {
|
6
|
-
"use strict";
|
7
|
-
|
8
|
-
var doT = {
|
9
|
-
version: '1.0.0',
|
10
|
-
templateSettings: {
|
11
|
-
evaluate: /\{\{([\s\S]+?\}?)\}\}/g,
|
12
|
-
interpolate: /\{\{=([\s\S]+?)\}\}/g,
|
13
|
-
encode: /\{\{!([\s\S]+?)\}\}/g,
|
14
|
-
use: /\{\{#([\s\S]+?)\}\}/g,
|
15
|
-
useParams: /(^|[^\w$])def(?:\.|\[[\'\"])([\w$\.]+)(?:[\'\"]\])?\s*\:\s*([\w$\.]+|\"[^\"]+\"|\'[^\']+\'|\{[^\}]+\})/g,
|
16
|
-
define: /\{\{##\s*([\w\.$]+)\s*(\:|=)([\s\S]+?)#\}\}/g,
|
17
|
-
defineParams:/^\s*([\w$]+):([\s\S]+)/,
|
18
|
-
conditional: /\{\{\?(\?)?\s*([\s\S]*?)\s*\}\}/g,
|
19
|
-
iterate: /\{\{~\s*(?:\}\}|([\s\S]+?)\s*\:\s*([\w$]+)\s*(?:\:\s*([\w$]+))?\s*\}\})/g,
|
20
|
-
varname: 'it',
|
21
|
-
strip: true,
|
22
|
-
append: true,
|
23
|
-
selfcontained: false
|
24
|
-
},
|
25
|
-
template: undefined, //fn, compile template
|
26
|
-
compile: undefined //fn, for express
|
27
|
-
};
|
28
|
-
|
29
|
-
if (typeof module !== 'undefined' && module.exports) {
|
30
|
-
module.exports = doT;
|
31
|
-
} else if (typeof define === 'function' && define.amd) {
|
32
|
-
define(function(){return doT;});
|
33
|
-
} else {
|
34
|
-
(function(){ return this || (0,eval)('this'); }()).doT = doT;
|
35
|
-
}
|
36
|
-
|
37
|
-
function encodeHTMLSource() {
|
38
|
-
var encodeHTMLRules = { "&": "&", "<": "<", ">": ">", '"': '"', "'": ''', "/": '/' },
|
39
|
-
matchHTML = /&(?!#?\w+;)|<|>|"|'|\//g;
|
40
|
-
return function() {
|
41
|
-
return this ? this.replace(matchHTML, function(m) {return encodeHTMLRules[m] || m;}) : this;
|
42
|
-
};
|
43
|
-
}
|
44
|
-
String.prototype.encodeHTML = encodeHTMLSource();
|
45
|
-
|
46
|
-
var startend = {
|
47
|
-
append: { start: "'+(", end: ")+'", endencode: "||'').toString().encodeHTML()+'" },
|
48
|
-
split: { start: "';out+=(", end: ");out+='", endencode: "||'').toString().encodeHTML();out+='"}
|
49
|
-
}, skip = /$^/;
|
50
|
-
|
51
|
-
function resolveDefs(c, block, def) {
|
52
|
-
return ((typeof block === 'string') ? block : block.toString())
|
53
|
-
.replace(c.define || skip, function(m, code, assign, value) {
|
54
|
-
if (code.indexOf('def.') === 0) {
|
55
|
-
code = code.substring(4);
|
56
|
-
}
|
57
|
-
if (!(code in def)) {
|
58
|
-
if (assign === ':') {
|
59
|
-
if (c.defineParams) value.replace(c.defineParams, function(m, param, v) {
|
60
|
-
def[code] = {arg: param, text: v};
|
61
|
-
});
|
62
|
-
if (!(code in def)) def[code]= value;
|
63
|
-
} else {
|
64
|
-
new Function("def", "def['"+code+"']=" + value)(def);
|
65
|
-
}
|
66
|
-
}
|
67
|
-
return '';
|
68
|
-
})
|
69
|
-
.replace(c.use || skip, function(m, code) {
|
70
|
-
if (c.useParams) code = code.replace(c.useParams, function(m, s, d, param) {
|
71
|
-
if (def[d] && def[d].arg && param) {
|
72
|
-
var rw = (d+":"+param).replace(/'|\\/g, '_');
|
73
|
-
def.__exp = def.__exp || {};
|
74
|
-
def.__exp[rw] = def[d].text.replace(new RegExp("(^|[^\\w$])" + def[d].arg + "([^\\w$])", "g"), "$1" + param + "$2");
|
75
|
-
return s + "def.__exp['"+rw+"']";
|
76
|
-
}
|
77
|
-
});
|
78
|
-
var v = new Function("def", "return " + code)(def);
|
79
|
-
return v ? resolveDefs(c, v, def) : v;
|
80
|
-
});
|
81
|
-
}
|
82
|
-
|
83
|
-
function unescape(code) {
|
84
|
-
return code.replace(/\\('|\\)/g, "$1").replace(/[\r\t\n]/g, ' ');
|
85
|
-
}
|
86
|
-
|
87
|
-
doT.template = function(tmpl, c, def) {
|
88
|
-
c = c || doT.templateSettings;
|
89
|
-
var cse = c.append ? startend.append : startend.split, needhtmlencode, sid = 0, indv,
|
90
|
-
str = (c.use || c.define) ? resolveDefs(c, tmpl, def || {}) : tmpl;
|
91
|
-
|
92
|
-
str = ("var out='" + (c.strip ? str.replace(/(^|\r|\n)\t* +| +\t*(\r|\n|$)/g,' ')
|
93
|
-
.replace(/\r|\n|\t|\/\*[\s\S]*?\*\//g,''): str)
|
94
|
-
.replace(/'|\\/g, '\\$&')
|
95
|
-
.replace(c.interpolate || skip, function(m, code) {
|
96
|
-
return cse.start + unescape(code) + cse.end;
|
97
|
-
})
|
98
|
-
.replace(c.encode || skip, function(m, code) {
|
99
|
-
needhtmlencode = true;
|
100
|
-
return cse.start + unescape(code) + cse.endencode;
|
101
|
-
})
|
102
|
-
.replace(c.conditional || skip, function(m, elsecase, code) {
|
103
|
-
return elsecase ?
|
104
|
-
(code ? "';}else if(" + unescape(code) + "){out+='" : "';}else{out+='") :
|
105
|
-
(code ? "';if(" + unescape(code) + "){out+='" : "';}out+='");
|
106
|
-
})
|
107
|
-
.replace(c.iterate || skip, function(m, iterate, vname, iname) {
|
108
|
-
if (!iterate) return "';} } out+='";
|
109
|
-
sid+=1; indv=iname || "i"+sid; iterate=unescape(iterate);
|
110
|
-
return "';var arr"+sid+"="+iterate+";if(arr"+sid+"){var "+vname+","+indv+"=-1,l"+sid+"=arr"+sid+".length-1;while("+indv+"<l"+sid+"){"
|
111
|
-
+vname+"=arr"+sid+"["+indv+"+=1];out+='";
|
112
|
-
})
|
113
|
-
.replace(c.evaluate || skip, function(m, code) {
|
114
|
-
return "';" + unescape(code) + "out+='";
|
115
|
-
})
|
116
|
-
+ "';return out;")
|
117
|
-
.replace(/\n/g, '\\n').replace(/\t/g, '\\t').replace(/\r/g, '\\r')
|
118
|
-
.replace(/(\s|;|\}|^|\{)out\+='';/g, '$1').replace(/\+''/g, '')
|
119
|
-
.replace(/(\s|;|\}|^|\{)out\+=''\+/g,'$1out+=');
|
120
|
-
|
121
|
-
if (needhtmlencode && c.selfcontained) {
|
122
|
-
str = "String.prototype.encodeHTML=(" + encodeHTMLSource.toString() + "());" + str;
|
123
|
-
}
|
124
|
-
try {
|
125
|
-
return new Function(c.varname, str);
|
126
|
-
} catch (e) {
|
127
|
-
if (typeof console !== 'undefined') console.log("Could not create a template function: " + str);
|
128
|
-
throw e;
|
129
|
-
}
|
130
|
-
};
|
131
|
-
|
132
|
-
doT.compile = function(tmpl, def) {
|
133
|
-
return doT.template(tmpl, null, def);
|
134
|
-
};
|
135
|
-
}());
|