pinkman 0.9.9.8 → 0.9.9.9.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/README.md +12 -12
- data/app/assets/javascripts/pinkman_base/collection.coffee +48 -20
- data/app/assets/javascripts/pinkman_base/common.coffee +38 -9
- data/app/assets/javascripts/pinkman_base/controller.coffee +134 -36
- data/app/assets/javascripts/pinkman_base/mixins.coffee +8 -4
- data/app/assets/javascripts/pinkman_base/object.coffee.erb +15 -13
- data/app/assets/javascripts/pinkman_base/pinkman.coffee +16 -0
- data/app/assets/javascripts/pinkman_base/render.coffee.erb +17 -5
- data/app/assets/javascripts/pinkman_base/router.coffee +95 -46
- data/app/assets/javascripts/pinkman_base/tools.coffee +3 -3
- data/app/assets/stylesheets/_colors.scss +45 -0
- data/app/assets/stylesheets/_custom_colors.scss +7 -0
- data/app/assets/stylesheets/_mixins.scss +39 -0
- data/app/assets/stylesheets/_settings.scss +1 -0
- data/app/assets/stylesheets/pinkman/buttons.scss +15 -0
- data/app/assets/stylesheets/pinkman/colors.scss +99 -0
- data/app/assets/stylesheets/pinkman/containers.scss +15 -0
- data/app/assets/stylesheets/pinkman/elements.scss +33 -0
- data/app/assets/stylesheets/pinkman/forms.scss +89 -0
- data/app/assets/stylesheets/pinkman/grid.scss +120 -0
- data/app/assets/stylesheets/pinkman/imgs.scss +7 -0
- data/app/assets/stylesheets/pinkman/lists.scss +58 -0
- data/app/assets/stylesheets/pinkman/loaders.scss +495 -0
- data/app/assets/stylesheets/pinkman/margins.scss +65 -0
- data/app/assets/stylesheets/pinkman/portfolio.scss +59 -0
- data/app/assets/stylesheets/pinkman/pygments.css.erb +1 -0
- data/app/assets/stylesheets/pinkman/reset.scss +51 -0
- data/app/assets/stylesheets/pinkman/sector.scss +10 -0
- data/app/assets/stylesheets/pinkman/tables.scss +62 -0
- data/app/assets/stylesheets/pinkman/typo.scss +104 -0
- data/app/assets/stylesheets/pinkman.css +17 -0
- data/app/controllers/pinkman/pinkman_controller.rb +6 -0
- data/app/helpers/pinkman/pinkman_helper.rb +14 -0
- data/app/views/pinkman/_error_for.html.slim +4 -0
- data/app/views/pinkman/pinkman/_form_input.html.slim +4 -0
- data/app/views/pinkman/pinkman/_form_select.html.slim +13 -0
- data/app/views/pinkman/pinkman/_form_textarea.html.slim +4 -0
- data/app/views/pinkman/pinkman/hello.html.erb +53 -0
- data/config/routes.rb +7 -0
- data/lib/generators/pinkman/USAGE +60 -14
- data/lib/generators/pinkman/app_base_generator.rb +16 -4
- data/lib/generators/pinkman/controller_generator.rb +29 -0
- data/lib/generators/pinkman/crud_generator.rb +24 -0
- data/lib/generators/pinkman/initializer_generator.rb +12 -0
- data/lib/generators/pinkman/install_generator.rb +29 -2
- data/lib/generators/pinkman/model_generator.rb +2 -2
- data/lib/generators/pinkman/page_generator.rb +15 -0
- data/lib/generators/pinkman/route_generator.rb +40 -0
- data/lib/generators/pinkman/route_resource_generator.rb +40 -0
- data/lib/generators/pinkman/template_generator.rb +47 -0
- data/lib/generators/pinkman/templates/api.rb.erb +6 -6
- data/lib/generators/pinkman/templates/api_controller.rb +22 -18
- data/lib/generators/pinkman/templates/app.coffee.erb +1 -0
- data/lib/generators/pinkman/templates/app_app.coffee.erb +1 -0
- data/lib/generators/pinkman/templates/app_collection.coffee.erb +1 -1
- data/lib/generators/pinkman/templates/app_object.coffee.erb +1 -1
- data/lib/generators/pinkman/templates/app_router.coffee.erb +1 -0
- data/lib/generators/pinkman/templates/app_routes.coffee.erb +34 -0
- data/lib/generators/pinkman/templates/controller.coffee.erb +4 -0
- data/lib/generators/pinkman/templates/example.mixin.coffee.erb +32 -0
- data/lib/generators/pinkman/templates/hello.controller.coffee.erb +98 -0
- data/lib/generators/pinkman/templates/initializer.rb.erb +6 -0
- data/lib/generators/pinkman/templates/my.pinkman.app.js +70 -0
- data/lib/generators/pinkman/templates/pink_template.html.erb.erb +4 -0
- data/lib/generators/pinkman/templates/pink_template.html.haml.erb +3 -0
- data/lib/generators/pinkman/templates/pink_template.html.slim.erb +3 -0
- data/lib/generators/pinkman/templates/serializer.rb.erb +6 -6
- data/lib/pinkman/base_helper.rb +15 -0
- data/lib/pinkman/form_helper/form_helpers.rb +65 -0
- data/lib/pinkman/form_helper.rb +36 -0
- data/lib/pinkman/serializer/base.rb +0 -1
- data/lib/pinkman/version.rb +1 -1
- data/lib/pinkman/views_helpers/collection_helper.rb +16 -0
- data/lib/pinkman/views_helpers/conditional_helper.rb +19 -0
- data/lib/pinkman/views_helpers/dispatcher.rb +27 -0
- data/lib/pinkman/views_helpers/form_helper.rb +63 -0
- data/lib/pinkman/views_helpers/template_helper.rb +65 -0
- data/lib/pinkman/views_helpers/writer_helper.rb +31 -0
- data/lib/pinkman/views_helpers.rb +71 -0
- data/lib/pinkman.rb +31 -5
- data/public/jquery.pinkman.min.js +4 -0
- data/public/pinkman.min.js +2 -29
- metadata +61 -4
- data/app/helpers/pinkman_helper.rb +0 -87
@@ -0,0 +1,65 @@
|
|
1
|
+
.space {
|
2
|
+
margin: 30px auto;
|
3
|
+
}
|
4
|
+
.space-xs{
|
5
|
+
margin: 10px auto;
|
6
|
+
}
|
7
|
+
.space-sm{
|
8
|
+
margin: 20px auto;
|
9
|
+
}
|
10
|
+
// .space-md{
|
11
|
+
// margin: 30px auto;
|
12
|
+
// }
|
13
|
+
.space-lg{
|
14
|
+
margin: 40px auto;
|
15
|
+
}
|
16
|
+
.space-xl{
|
17
|
+
margin: 60px auto;
|
18
|
+
}
|
19
|
+
.space-hg{
|
20
|
+
margin: 90px auto;
|
21
|
+
}
|
22
|
+
.space-xhg{
|
23
|
+
margin: 120px auto;
|
24
|
+
}
|
25
|
+
|
26
|
+
.space-top{
|
27
|
+
margin: 30px 0 15px 0;
|
28
|
+
}
|
29
|
+
|
30
|
+
.space-h{
|
31
|
+
margin-left: 10px;
|
32
|
+
margin-right: 10px
|
33
|
+
}
|
34
|
+
|
35
|
+
.breathe-h{
|
36
|
+
padding-left: 10px;
|
37
|
+
padding-right: 10px
|
38
|
+
}
|
39
|
+
|
40
|
+
.breathe{
|
41
|
+
padding: 30px 10px;
|
42
|
+
}
|
43
|
+
|
44
|
+
.breathe-xs{
|
45
|
+
padding: 10px 10px;
|
46
|
+
}
|
47
|
+
.breathe-sm{
|
48
|
+
padding: 20px 10px;
|
49
|
+
}
|
50
|
+
// .breathe-md{
|
51
|
+
// padding: 30px 10px;
|
52
|
+
// }
|
53
|
+
|
54
|
+
.breathe-lg{
|
55
|
+
padding: 40px 10px;
|
56
|
+
}
|
57
|
+
.breathe-xl{
|
58
|
+
padding: 60px 10px;
|
59
|
+
}
|
60
|
+
.breathe-hg{
|
61
|
+
padding: 90px 10px;
|
62
|
+
}
|
63
|
+
.breathe-xhg{
|
64
|
+
padding: 120px 10px;
|
65
|
+
}
|
@@ -0,0 +1,59 @@
|
|
1
|
+
@import '../settings';
|
2
|
+
@import '../colors';
|
3
|
+
@import '../mixins';
|
4
|
+
|
5
|
+
.portfolio{
|
6
|
+
font-size: 0;
|
7
|
+
.wrapper,.item{
|
8
|
+
vertical-align: top;
|
9
|
+
@include box_sizing;
|
10
|
+
display: inline-block;
|
11
|
+
overflow: hidden;
|
12
|
+
font-size: $default_font_size;
|
13
|
+
}
|
14
|
+
&.ten-per-row{
|
15
|
+
.wrapper,.item{
|
16
|
+
width: percentage(1/10);
|
17
|
+
}
|
18
|
+
}
|
19
|
+
&.nine-per-row{
|
20
|
+
.wrapper,.item{
|
21
|
+
width: percentage(1/9);
|
22
|
+
}
|
23
|
+
}
|
24
|
+
&.eight-per-row{
|
25
|
+
.wrapper,.item{
|
26
|
+
width: percentage(1/8);
|
27
|
+
}
|
28
|
+
}
|
29
|
+
&.seven-per-row{
|
30
|
+
.wrapper,.item{
|
31
|
+
width: percentage(1/7);
|
32
|
+
}
|
33
|
+
}
|
34
|
+
&.six-per-row{
|
35
|
+
.wrapper,.item{
|
36
|
+
width: percentage(1/6);
|
37
|
+
}
|
38
|
+
}
|
39
|
+
&.five-per-row{
|
40
|
+
.wrapper,.item{
|
41
|
+
width: percentage(1/5);
|
42
|
+
}
|
43
|
+
}
|
44
|
+
&.four-per-row{
|
45
|
+
.wrapper,.item{
|
46
|
+
width: percentage(1/4);
|
47
|
+
}
|
48
|
+
}
|
49
|
+
&.three-per-row{
|
50
|
+
.wrapper,.item{
|
51
|
+
width: percentage(1/3);
|
52
|
+
}
|
53
|
+
}
|
54
|
+
&.two-per-row{
|
55
|
+
.wrapper,.item{
|
56
|
+
width: percentage(1/2);
|
57
|
+
}
|
58
|
+
}
|
59
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= Rouge::Theme.find('github').render %>
|
@@ -0,0 +1,51 @@
|
|
1
|
+
html, body, div, span, applet, object, iframe,
|
2
|
+
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
|
3
|
+
a, abbr, acronym, address, big, cite, code,
|
4
|
+
del, dfn, em, img, ins, kbd, q, s, samp,
|
5
|
+
small, strike, strong, sub, sup, tt, var,
|
6
|
+
b, u, i, center,
|
7
|
+
dl, dt, dd, ol, ul, li,
|
8
|
+
fieldset, form, label, legend,
|
9
|
+
table, caption, tbody, tfoot, thead, tr, th, td,
|
10
|
+
article, aside, canvas, details, embed,
|
11
|
+
figure, figcaption, footer, header, hgroup,
|
12
|
+
menu, nav, output, ruby, section, summary,
|
13
|
+
time, mark, audio, video {
|
14
|
+
margin: 0;
|
15
|
+
padding: 0;
|
16
|
+
border: 0;
|
17
|
+
font-size: 100%;
|
18
|
+
font: inherit;
|
19
|
+
color: inherit;
|
20
|
+
vertical-align: baseline;
|
21
|
+
}
|
22
|
+
/* HTML5 display-role reset for older browsers */
|
23
|
+
article, aside, details, figcaption, figure,
|
24
|
+
footer, header, hgroup, menu, nav, section {
|
25
|
+
display: block;
|
26
|
+
}
|
27
|
+
body {
|
28
|
+
line-height: 1.1;
|
29
|
+
}
|
30
|
+
blockquote, q {
|
31
|
+
quotes: none;
|
32
|
+
}
|
33
|
+
blockquote:before, blockquote:after,
|
34
|
+
q:before, q:after {
|
35
|
+
content: '';
|
36
|
+
content: none;
|
37
|
+
}
|
38
|
+
table {
|
39
|
+
border-collapse: collapse;
|
40
|
+
border-spacing: 0;
|
41
|
+
}
|
42
|
+
|
43
|
+
html,body{
|
44
|
+
min-height: 100%;
|
45
|
+
height: 100%;
|
46
|
+
}
|
47
|
+
|
48
|
+
@viewport {
|
49
|
+
width: device-width;
|
50
|
+
zoom: 1;
|
51
|
+
}
|
@@ -0,0 +1,62 @@
|
|
1
|
+
@import '../settings';
|
2
|
+
@import '../colors';
|
3
|
+
|
4
|
+
table.ui{
|
5
|
+
width: 100%;
|
6
|
+
margin: 0;
|
7
|
+
border-collapse: separate;
|
8
|
+
border-spacing: 0;
|
9
|
+
border: 1px solid $line_color;
|
10
|
+
|
11
|
+
&.borderless, &.bordless, &.light{
|
12
|
+
border: none;
|
13
|
+
thead,tbody{
|
14
|
+
tr{
|
15
|
+
th,td{
|
16
|
+
border: none;
|
17
|
+
}
|
18
|
+
}
|
19
|
+
}
|
20
|
+
}
|
21
|
+
|
22
|
+
&.zebra{
|
23
|
+
tbody{
|
24
|
+
tr:nth-child(even){
|
25
|
+
background-color: $bg_light;
|
26
|
+
}
|
27
|
+
}
|
28
|
+
}
|
29
|
+
|
30
|
+
thead, tbody{
|
31
|
+
tr{
|
32
|
+
td,th{
|
33
|
+
text-align: left;
|
34
|
+
border-bottom: 1px solid $line_color;
|
35
|
+
border-right: 1px solid $line_color;
|
36
|
+
padding: 10px;
|
37
|
+
&:last-child{
|
38
|
+
border-right: none;
|
39
|
+
}
|
40
|
+
}
|
41
|
+
&:last-child{
|
42
|
+
td{
|
43
|
+
border-bottom: none;
|
44
|
+
}
|
45
|
+
}
|
46
|
+
}
|
47
|
+
}
|
48
|
+
thead{
|
49
|
+
tr{
|
50
|
+
th{
|
51
|
+
font-weight: bold;
|
52
|
+
}
|
53
|
+
}
|
54
|
+
}
|
55
|
+
tbody{
|
56
|
+
tr{
|
57
|
+
td{
|
58
|
+
|
59
|
+
}
|
60
|
+
}
|
61
|
+
}
|
62
|
+
}
|
@@ -0,0 +1,104 @@
|
|
1
|
+
@import '../settings';
|
2
|
+
@import '../colors';
|
3
|
+
|
4
|
+
html, body{
|
5
|
+
font-size: $default_font_size;
|
6
|
+
font-family: 'Muli', sans-serif;
|
7
|
+
}
|
8
|
+
|
9
|
+
.centralized, .center{
|
10
|
+
&,* { text-align: center;}
|
11
|
+
}
|
12
|
+
|
13
|
+
h1,h2,h3,h4,h5,h6{
|
14
|
+
font-family: 'Oswald', sans-serif;
|
15
|
+
margin-bottom: 5px;
|
16
|
+
}
|
17
|
+
|
18
|
+
|
19
|
+
h1{
|
20
|
+
font-size: 3rem;
|
21
|
+
}
|
22
|
+
|
23
|
+
h2{
|
24
|
+
font-size: 2.5rem;
|
25
|
+
}
|
26
|
+
|
27
|
+
h3{
|
28
|
+
font-size: 2rem;
|
29
|
+
}
|
30
|
+
|
31
|
+
h4{
|
32
|
+
font-size: 1.8rem;
|
33
|
+
}
|
34
|
+
|
35
|
+
h5{
|
36
|
+
font-size: 1.5rem;
|
37
|
+
}
|
38
|
+
|
39
|
+
h6{
|
40
|
+
font-size: 1.2rem;
|
41
|
+
}
|
42
|
+
|
43
|
+
small{
|
44
|
+
font-size: 80%;
|
45
|
+
}
|
46
|
+
|
47
|
+
b,strong, .b{
|
48
|
+
font-weight: bold;
|
49
|
+
}
|
50
|
+
|
51
|
+
p{
|
52
|
+
font-size: 1em;
|
53
|
+
margin: 1.2em 0;
|
54
|
+
}
|
55
|
+
|
56
|
+
.extra-small, .xs{
|
57
|
+
font-size: 0.7rem;
|
58
|
+
}
|
59
|
+
|
60
|
+
.small, .sm{
|
61
|
+
font-size: 0.9rem;
|
62
|
+
}
|
63
|
+
|
64
|
+
.medium, .md{
|
65
|
+
font-size: 1.5rem;
|
66
|
+
}
|
67
|
+
|
68
|
+
.big, .lg{
|
69
|
+
font-size: 2rem;
|
70
|
+
}
|
71
|
+
|
72
|
+
.xl, .extra-large,.bigger, .larger{
|
73
|
+
font-size: 3rem;
|
74
|
+
}
|
75
|
+
|
76
|
+
.hg, .huge{
|
77
|
+
font-size: 4rem;
|
78
|
+
}
|
79
|
+
|
80
|
+
.xhg, .extra-huge{
|
81
|
+
font-size: 6rem;
|
82
|
+
}
|
83
|
+
|
84
|
+
.subline{
|
85
|
+
padding: 0 0 0.5em 0;
|
86
|
+
border-bottom-width: 1px;
|
87
|
+
border-bottom-style: solid;
|
88
|
+
}
|
89
|
+
|
90
|
+
.underline{
|
91
|
+
text-decoration: underline;
|
92
|
+
}
|
93
|
+
|
94
|
+
.line-through, .strike{
|
95
|
+
text-decoration: line-through;
|
96
|
+
}
|
97
|
+
|
98
|
+
.upcase{
|
99
|
+
text-transform: uppercase;
|
100
|
+
}
|
101
|
+
|
102
|
+
a{
|
103
|
+
text-decoration: none;
|
104
|
+
}
|
@@ -0,0 +1,17 @@
|
|
1
|
+
/*
|
2
|
+
*= require ./pinkman/reset
|
3
|
+
*= require ./pinkman/grid
|
4
|
+
*= require ./pinkman/colors
|
5
|
+
*= require ./pinkman/containers
|
6
|
+
*= require ./pinkman/elements
|
7
|
+
*= require ./pinkman/forms
|
8
|
+
*= require ./pinkman/buttons
|
9
|
+
*= require ./pinkman/tables
|
10
|
+
*= require ./pinkman/lists
|
11
|
+
*= require ./pinkman/sector
|
12
|
+
*= require ./pinkman/typo
|
13
|
+
*= require ./pinkman/margins
|
14
|
+
*= require ./pinkman/loaders
|
15
|
+
*= require ./pinkman/portfolio
|
16
|
+
*= require ./pinkman/imgs
|
17
|
+
*/
|
@@ -0,0 +1,13 @@
|
|
1
|
+
.form-field
|
2
|
+
label for=attr_name = label
|
3
|
+
== p.select attr_name, html_options
|
4
|
+
- if placeholder
|
5
|
+
- if obligatory.present?
|
6
|
+
option value="" selected='selected' disabled='disabled' = placeholder
|
7
|
+
- else
|
8
|
+
option value="" selected='selected' = placeholder
|
9
|
+
|
10
|
+
- options_hash.each do |k,v|
|
11
|
+
option value=k = v
|
12
|
+
|
13
|
+
== p.error_for attr_name, label
|
@@ -0,0 +1,53 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta charset="utf-8">
|
5
|
+
<title>Pinkman.js</title>
|
6
|
+
<%= javascript_include_tag 'application' %>
|
7
|
+
</head>
|
8
|
+
<body>
|
9
|
+
<%= p.template 'pinkman-hello' do %>
|
10
|
+
<div style='background-color: #352946; width: 100%; height: 100%; position: fixed; top: 0; left: 0; overflow: hidden; z-index: 999999; padding: 15% 0; text-align: center;'>
|
11
|
+
<div style="color: white; text-align: center; font-family: Arial, sans; font-size: 64px;">
|
12
|
+
<b style='color: #EC3680;'>Pink</b>man
|
13
|
+
</div>
|
14
|
+
<div style="color: white; text-align: center; font-family: Arial, sans; font-size: 12px;">
|
15
|
+
JS/Rails Framework <br/>Version: <b style='font-weight: bold;'><%= Pinkman::VERSION %></b>
|
16
|
+
</div>
|
17
|
+
<div style="color: white; text-align: center; font-family: Arial, sans; margin: 15px auto; font-size: 24px;">
|
18
|
+
{{ title }}
|
19
|
+
</div>
|
20
|
+
<div style="color: white; text-align: center; font-family: Arial, sans; display: inline-block; padding: 15px; border-radius: 5px; background-color: #EC3680; margin: 30px auto;" data-action='you-are-over-me'>
|
21
|
+
Come here
|
22
|
+
</div>
|
23
|
+
|
24
|
+
<div style="color: white; text-align: center; font-family: Arial, sans; font-size: 12px; padding: 15px; background-color: #483a5a; margin: 30px auto;">
|
25
|
+
<b>assets/javascripts/pinkman/app/controllers/hello.coffee</b>
|
26
|
+
</div>
|
27
|
+
</div>
|
28
|
+
<% end %>
|
29
|
+
<div id='pinkman-hello'>
|
30
|
+
<h1>Ops...</h1>
|
31
|
+
<h4>Pinkman.js files could not be loaded.</h4>
|
32
|
+
<p>
|
33
|
+
It seems that Pinkman.js could not be loaded from <b>application.js.</b>
|
34
|
+
<br /><br /> Maybe Jquery is missing. Pinkman depends on Jquery.
|
35
|
+
</p>
|
36
|
+
<p>
|
37
|
+
Check out console (F12 on Chrome.) It may give you a clue of what is wrong.
|
38
|
+
</p>
|
39
|
+
<p>
|
40
|
+
This small test expects that:
|
41
|
+
</p>
|
42
|
+
<ol>
|
43
|
+
<li>You run <b>rails g pinkman:install</b></li>
|
44
|
+
<li>You are using <b>Asset Pipeline.</b></li>
|
45
|
+
<li><b>application.js</b> exists</li>
|
46
|
+
<li>application.js loads <b>jquery</b> before pinkman</li>
|
47
|
+
<li>application.js loads <b>my.pinkman.app.js</b></li>
|
48
|
+
</ol>
|
49
|
+
<p>Otherwise it won't work.</p>
|
50
|
+
</div>
|
51
|
+
</body>
|
52
|
+
|
53
|
+
</html>
|
data/config/routes.rb
ADDED
@@ -1,20 +1,66 @@
|
|
1
1
|
Description:
|
2
|
-
|
3
|
-
|
2
|
+
Pinkman generators
|
3
|
+
|
4
|
+
Install:
|
5
|
+
Setup pinkman. This creates common pinkman directories, defines a api namespace in routes.rb, etc.
|
6
|
+
|
7
|
+
Resource:
|
8
|
+
rails generate pinkman:resource model
|
9
|
+
|
10
|
+
Desc: Creates pinkman models (coffee) and rails api controllers to interact with a given Rails Model.
|
11
|
+
Files:
|
12
|
+
app/controllers/api/models_controller.rb
|
13
|
+
routes.rb
|
14
|
+
app/assets/.../pinkman/app/models/{object, collection}.coffee
|
15
|
+
|
16
|
+
Page:
|
17
|
+
rails generate pinkman:page page_name
|
18
|
+
|
19
|
+
Desc: Creates a pinkman controller, its template and route.
|
20
|
+
Files:
|
21
|
+
app/assets/.../pinkman/app/controllers/page_name.coffee
|
22
|
+
app/views/pinkman/page_name.html.erb
|
23
|
+
app/assets/.../pinkman/config/routes.coffee (add content)
|
24
|
+
|
25
|
+
CRUD:
|
26
|
+
rails generate pinkman:crud model
|
27
|
+
|
28
|
+
Desc: Creates CRUD routes, templates and controllers
|
29
|
+
Files:
|
30
|
+
app/assets/.../pinkman/app/controllers/model/{index,edit,new,show}.coffee
|
31
|
+
app/views/pinkman/model/{index,edit,new,show}.html.erb
|
32
|
+
app/assets/.../pinkman/config/routes.coffee (add content)
|
33
|
+
|
4
34
|
Api:
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
35
|
+
rails generate pinkman:api name
|
36
|
+
|
37
|
+
Desc: This will create an api controller and its routes.
|
38
|
+
Files:
|
39
|
+
app/controllers/api/pluralized_name_controller.rb
|
9
40
|
|
10
41
|
Model:
|
11
42
|
rails generate pinkman:model name
|
12
|
-
|
13
|
-
|
43
|
+
|
44
|
+
Files:
|
45
|
+
app/assets/javascripts/pinkman/models/name/name.js
|
46
|
+
app/assets/javascripts/pinkman/models/name/pluralized_name.js
|
47
|
+
|
48
|
+
Controller:
|
49
|
+
rails generate pinkman:controller level:sublevel:controller_name
|
50
|
+
|
51
|
+
Desc: Creates a controller, a template and a route.
|
52
|
+
Files:
|
53
|
+
app/assets/.../pinkman/app/controllers/level/sublevel/controller_name.coffee
|
54
|
+
|
55
|
+
Template:
|
56
|
+
rails generate pinkman:template level:sublevel:template_name
|
57
|
+
|
58
|
+
Desc: Generates a template.
|
59
|
+
Files:
|
60
|
+
app/views/pinkman/level/sublevel/_template_name.html.erb
|
14
61
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
Creates all coffeescripts and api resources to interact with a Rails Model named model.
|
62
|
+
Route:
|
63
|
+
rails generate pinkman:route level:sublevel:route
|
64
|
+
|
65
|
+
Desc: Generates a route to '/level/sublevel/route'
|
66
|
+
Files: app/assets/.../pinkman/config/routes.coffee (add content)
|
@@ -6,18 +6,30 @@ module Pinkman
|
|
6
6
|
source_root File.expand_path('../templates', __FILE__)
|
7
7
|
|
8
8
|
def generate_files
|
9
|
-
template '
|
10
|
-
template '
|
9
|
+
template 'app_app.coffee.erb', "app/assets/javascripts/pinkman/base/#{app_filename}"
|
10
|
+
template 'app_router.coffee.erb', "app/assets/javascripts/pinkman/base/#{router_filename}"
|
11
|
+
template 'app_collection.coffee.erb', "app/assets/javascripts/pinkman/base/#{collection_filename}"
|
12
|
+
template 'app_object.coffee.erb', "app/assets/javascripts/pinkman/base/#{object_filename}"
|
13
|
+
template 'app_routes.coffee.erb', "app/assets/javascripts/pinkman/config/routes.coffee"
|
11
14
|
end
|
12
15
|
|
13
16
|
private
|
14
17
|
|
18
|
+
|
19
|
+
def app_filename
|
20
|
+
'app.coffee'
|
21
|
+
end
|
22
|
+
|
23
|
+
def router_filename
|
24
|
+
'router.coffee'
|
25
|
+
end
|
26
|
+
|
15
27
|
def object_filename
|
16
|
-
'
|
28
|
+
'object.coffee'
|
17
29
|
end
|
18
30
|
|
19
31
|
def collection_filename
|
20
|
-
'
|
32
|
+
'collection.coffee'
|
21
33
|
end
|
22
34
|
|
23
35
|
def app_name
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'rails/generators/base'
|
2
|
+
|
3
|
+
module Pinkman
|
4
|
+
class ControllerGenerator < ::Rails::Generators::Base
|
5
|
+
source_root File.expand_path('../templates', __FILE__)
|
6
|
+
|
7
|
+
argument :controller_arg, type: :string
|
8
|
+
|
9
|
+
def normalize_argument
|
10
|
+
self.controller_arg = controller_arg.downcase.gsub(' ','_').strip.squeeze('_').gsub(/:/,'/')
|
11
|
+
end
|
12
|
+
|
13
|
+
def generate_controller
|
14
|
+
template "controller.coffee.erb", file_path
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def file_path
|
20
|
+
path = (controller_arg + '.coffee').split('/')
|
21
|
+
Rails.root.join('app','assets','javascripts','pinkman','app','controllers',*path.map{|p| p})
|
22
|
+
end
|
23
|
+
|
24
|
+
def controller_name
|
25
|
+
controller_arg.split('/').join('-').gsub(/[_\/]/,'-')
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'rails/generators/base'
|
2
|
+
|
3
|
+
module Pinkman
|
4
|
+
class CrudGenerator < ::Rails::Generators::Base
|
5
|
+
source_root File.expand_path('../templates', __FILE__)
|
6
|
+
|
7
|
+
argument :crud_name, type: :string, default: "nameHere"
|
8
|
+
|
9
|
+
def exec
|
10
|
+
generate "pinkman:route_resource #{crud_name}"
|
11
|
+
generate "pinkman:controller #{crud_name}:index"
|
12
|
+
generate "pinkman:template #{crud_name}:index"
|
13
|
+
|
14
|
+
generate "pinkman:controller #{crud_name}:show"
|
15
|
+
generate "pinkman:template #{crud_name}:show"
|
16
|
+
|
17
|
+
generate "pinkman:controller #{crud_name}:new"
|
18
|
+
generate "pinkman:template #{crud_name}:new"
|
19
|
+
|
20
|
+
generate "pinkman:controller #{crud_name}:edit"
|
21
|
+
generate "pinkman:template #{crud_name}:edit"
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
require 'rails/generators/base'
|
2
|
+
|
3
|
+
module Pinkman
|
4
|
+
class InitializerGenerator < ::Rails::Generators::Base
|
5
|
+
source_root File.expand_path('../templates', __FILE__)
|
6
|
+
|
7
|
+
def copy_initializer_file
|
8
|
+
template "initializer.rb.erb", "config/initializers/pinkman.rb"
|
9
|
+
end
|
10
|
+
|
11
|
+
end
|
12
|
+
end
|