kwatable 0.2.0 → 0.3.0
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/ChangeLog +46 -0
- data/MIT-LICENSE +20 -0
- data/README.txt +4 -2
- data/bin/kwatable +4 -4
- data/examples/ex1/Makefile +40 -14
- data/examples/ex1/{example1.yaml → tabledef.yaml} +42 -11
- data/examples/ex2/Makefile +41 -14
- data/examples/ex2/{example2.yaml → tabledef.yaml} +45 -30
- data/examples/ex3/Makefile +52 -0
- data/examples/ex3/tabledef.yaml +136 -0
- data/kwatable.gemspec +11 -10
- data/lib/kwatable.rb +24 -18
- data/lib/kwatable/kwatable.schema.yaml +95 -5
- data/lib/kwatable/main.rb +331 -0
- data/lib/kwatable/manipulator.rb +320 -192
- data/lib/kwatable/messages.rb +59 -0
- data/lib/kwatable/template/ddl-mysql.eruby +202 -0
- data/lib/kwatable/{templates → template}/ddl-postgresql.eruby +71 -45
- data/lib/kwatable/{templates → template}/defaults.yaml +2 -2
- data/lib/kwatable/template/dictionary.en.yaml +70 -0
- data/lib/kwatable/template/dictionary.ja.yaml +165 -0
- data/lib/kwatable/template/dto-java.eruby +77 -0
- data/lib/kwatable/template/dto-java.sub.eruby +259 -0
- data/lib/kwatable/template/dto-ruby.eruby +63 -0
- data/lib/kwatable/template/dto-ruby.sub.eruby +213 -0
- data/lib/kwatable/template/helper/column.rb +70 -0
- data/lib/kwatable/template/helper/common.rb +151 -0
- data/lib/kwatable/template/helper/java.rb +83 -0
- data/lib/kwatable/template/helper/label.rb +90 -0
- data/lib/kwatable/template/helper/ruby.rb +36 -0
- data/lib/kwatable/template/helper/table.rb +62 -0
- data/lib/kwatable/template/hibernate.eruby +139 -0
- data/lib/kwatable/template/rails-controller.eruby +66 -0
- data/lib/kwatable/template/rails-controller.sub.eruby +114 -0
- data/lib/kwatable/template/rails-kwartz.eruby +164 -0
- data/lib/kwatable/template/rails-kwartz/_attr.plogic.eruby +56 -0
- data/lib/kwatable/template/rails-kwartz/_form.plogic.eruby +81 -0
- data/lib/kwatable/template/rails-kwartz/_link.plogic.eruby +36 -0
- data/lib/kwatable/template/rails-kwartz/edit.cfg.yaml.eruby +16 -0
- data/lib/kwatable/template/rails-kwartz/edit.html.eruby +46 -0
- data/lib/kwatable/template/rails-kwartz/edit.plogic.eruby +20 -0
- data/lib/kwatable/template/rails-kwartz/layout.html.eruby +39 -0
- data/lib/kwatable/template/rails-kwartz/layout.plogic.eruby +32 -0
- data/lib/kwatable/template/rails-kwartz/list.html.eruby +94 -0
- data/lib/kwatable/template/rails-kwartz/list.plogic.eruby +41 -0
- data/lib/kwatable/template/rails-kwartz/new.html.eruby +100 -0
- data/lib/kwatable/template/rails-kwartz/new.plogic.eruby +26 -0
- data/lib/kwatable/template/rails-kwartz/show.html.eruby +51 -0
- data/lib/kwatable/template/rails-kwartz/show.plogic.eruby +9 -0
- data/lib/kwatable/template/rails-model.eruby +35 -0
- data/lib/kwatable/template/rails-model.sub.eruby +136 -0
- data/lib/kwatable/{templates → template}/validator-ruby.eruby +18 -11
- data/lib/kwatable/util.rb +133 -0
- data/lib/kwatable/util/assert-text-equal.rb +47 -0
- data/lib/kwatable/util/assertion.rb +115 -0
- data/lib/kwatable/validator.rb +50 -0
- data/test/assert-diff.rb +1 -1
- data/test/test-ex.rb +306 -0
- data/test/test.rb +37 -127
- metadata +66 -17
- data/COPYING +0 -340
- data/ChangeLog.txt +0 -65
- data/lib/kwatable/error-msg.rb +0 -38
- data/lib/kwatable/main-program.rb +0 -216
- data/lib/kwatable/templates/ddl-mysql.eruby +0 -172
- data/lib/kwatable/templates/dto-java.eruby +0 -260
- data/lib/kwatable/templates/dto-ruby.eruby +0 -185
@@ -0,0 +1,83 @@
|
|
1
|
+
##
|
2
|
+
## $Rev: 44 $
|
3
|
+
## $Release: 0.3.0 $
|
4
|
+
## copyright(c) 2005 kuwata-lab.com all rights reserved.
|
5
|
+
##
|
6
|
+
|
7
|
+
module Kwatable
|
8
|
+
|
9
|
+
module JavaHelper
|
10
|
+
|
11
|
+
|
12
|
+
## java keywords
|
13
|
+
def self.java_keywords()
|
14
|
+
keywords = <<-END
|
15
|
+
abstract assert boolean break byte case catch char class const
|
16
|
+
continue default do double else enum extends final finally float
|
17
|
+
for goto if implements import instanceof int interface long
|
18
|
+
native new package private protected public return short
|
19
|
+
static strictfp super switch synchronized this throw throws
|
20
|
+
transient try void volatile while
|
21
|
+
END
|
22
|
+
return keywords.split(/\s+/)
|
23
|
+
end
|
24
|
+
|
25
|
+
@@java_keyword_table = java_keywords().inject({}) { |h, w| h[w] = true; h }
|
26
|
+
|
27
|
+
|
28
|
+
## escape java keyword (ex. 'case' => '_case')
|
29
|
+
def escape_java_keyword(word)
|
30
|
+
return @@java_keyword_table[word] ? "_#{word}" : word
|
31
|
+
end
|
32
|
+
|
33
|
+
|
34
|
+
## determine java class or type from column data
|
35
|
+
def column_java_type(column, flag_package=false)
|
36
|
+
type = column['type']
|
37
|
+
width = column['width']
|
38
|
+
case type
|
39
|
+
when 'char' ; type = (!width || width == 1) ? 'char' : 'String'
|
40
|
+
when 'short' ;
|
41
|
+
when 'int', 'integer' ; type = 'int'
|
42
|
+
when 'str', 'string' ; type = width == 1 ? 'char' : 'String'
|
43
|
+
when 'text' ; type = width == 1 ? 'char' : 'String'
|
44
|
+
when 'float' ;
|
45
|
+
when 'double' ;
|
46
|
+
when 'bool', 'boolean' ; type = 'boolean'
|
47
|
+
when 'date' ; type = 'Date'
|
48
|
+
when 'timestamp' ; type = 'Date'
|
49
|
+
when 'money' ; type = 'double'
|
50
|
+
end
|
51
|
+
if flag_package
|
52
|
+
case type
|
53
|
+
when 'String': type = 'java.lang.String'
|
54
|
+
when 'Date': type = 'java.util.Date'
|
55
|
+
end
|
56
|
+
end
|
57
|
+
return type
|
58
|
+
end
|
59
|
+
|
60
|
+
|
61
|
+
## return class name of table with package
|
62
|
+
def table_java_class(table, package)
|
63
|
+
class_name = table_class(table)
|
64
|
+
return package ? "#{package}.#{class_name}" : class_name
|
65
|
+
end
|
66
|
+
|
67
|
+
|
68
|
+
## return accessor names
|
69
|
+
##
|
70
|
+
## ex.
|
71
|
+
## getter, setter = accessors("user_name", "String") #=> ["getUserName", "setUserName"]
|
72
|
+
## getter, setter = accessors("expired", "boolean") #=> ["isExpired", "setExpired"]
|
73
|
+
def accessors(attr_name, attr_type)
|
74
|
+
base = camel_case(attr_name)
|
75
|
+
getter = "#{attr_type == 'boolean' ? 'is' : 'get'}#{base}"
|
76
|
+
setter = "set#{base}"
|
77
|
+
return getter, setter
|
78
|
+
end
|
79
|
+
|
80
|
+
|
81
|
+
end
|
82
|
+
|
83
|
+
end
|
@@ -0,0 +1,90 @@
|
|
1
|
+
##
|
2
|
+
## $Rev: 39 $
|
3
|
+
## $Release: 0.3.0 $
|
4
|
+
## copyright(c) 2005 kuwata-lab.com all rights reserved.
|
5
|
+
##
|
6
|
+
|
7
|
+
|
8
|
+
module Kwatable
|
9
|
+
|
10
|
+
module LabelHelper
|
11
|
+
|
12
|
+
#
|
13
|
+
def load_dictionary_files(option_path_list=nil)
|
14
|
+
path_list = []
|
15
|
+
option_path_list ||= @options[?I].split(/,/) if @options[?I]
|
16
|
+
path_list += option_path_list if option_path_list
|
17
|
+
path_list += Kwatable.template_path if Kwatable.template_path
|
18
|
+
#
|
19
|
+
lang = @properties[:lang] || 'en'
|
20
|
+
dict_names = ['dictionary']
|
21
|
+
dict_names += @properties[:dict].split(/,/) if @properties[:dict]
|
22
|
+
filenames = []
|
23
|
+
dict_names.each do |dict_name|
|
24
|
+
fname = find_file("#{dict_name}.#{lang}.yaml", path_list)
|
25
|
+
fname ||= find_file("#{dict_name}.en.yaml", path_list) unless lang == 'en'
|
26
|
+
filenames << fname if fname
|
27
|
+
end
|
28
|
+
#
|
29
|
+
dictionary = {}
|
30
|
+
filenames.each do |filename|
|
31
|
+
hash = YAML.load_file(filename)
|
32
|
+
raise "#{filename}: mapping is required." unless hash.is_a?(Hash)
|
33
|
+
dictionary.update(hash)
|
34
|
+
end
|
35
|
+
return dictionary
|
36
|
+
end
|
37
|
+
|
38
|
+
# word
|
39
|
+
def w(key, *args)
|
40
|
+
return _w(key, true, *args)
|
41
|
+
end
|
42
|
+
|
43
|
+
#
|
44
|
+
def w!(key, *args)
|
45
|
+
return _w(key, false, *args)
|
46
|
+
end
|
47
|
+
|
48
|
+
#
|
49
|
+
def _w(key, error_when_not_found=false, *args)
|
50
|
+
@_dict ||= load_dictionary_files()
|
51
|
+
word = @_dict[key.to_s]
|
52
|
+
unless word
|
53
|
+
if error_when_not_found
|
54
|
+
err = StandardError.new("word key '#{key.inspect}' is not found. ")
|
55
|
+
err.set_backtrace(caller())
|
56
|
+
raise err
|
57
|
+
else
|
58
|
+
return nil
|
59
|
+
end
|
60
|
+
end
|
61
|
+
return args && !args.empty? ? word % args : word
|
62
|
+
end
|
63
|
+
|
64
|
+
# 'foo' => 'Foo', 'foo_bar_baz' => 'Foo bar baz'
|
65
|
+
def to_label(key)
|
66
|
+
word = w!(key) || key.to_s
|
67
|
+
return word =~ /\A\w+\z/ ? word.capitalize.split(/_/).join(' ') : word
|
68
|
+
end
|
69
|
+
|
70
|
+
# ex.
|
71
|
+
# colname = column['name']
|
72
|
+
# column['enum'].each do |enum_item|
|
73
|
+
# value, label = enum_value_and_label(enum_item, colname)
|
74
|
+
# p value, label
|
75
|
+
# end
|
76
|
+
def enum_value_and_label(enum_item, column_name)
|
77
|
+
item = enum_item
|
78
|
+
#return item.is_a?(Hash) ? [item['value'], item['label']] : [item, camel_case(item)]
|
79
|
+
if item.is_a?(Hash)
|
80
|
+
return item['value'], item['label']
|
81
|
+
else
|
82
|
+
key = "#{column_name}_#{item}"
|
83
|
+
label = _w(key) ? to_label(key) : to_label(item)
|
84
|
+
return item, label
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
end
|
89
|
+
|
90
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
##
|
2
|
+
## $Rev: 36 $
|
3
|
+
## $Release: 0.3.0 $
|
4
|
+
## copyright(c) 2005 kuwata-lab.com all rights reserved.
|
5
|
+
##
|
6
|
+
|
7
|
+
module Kwatable
|
8
|
+
|
9
|
+
module RubyHelper
|
10
|
+
|
11
|
+
|
12
|
+
## ruby keywords
|
13
|
+
def self.ruby_keywords()
|
14
|
+
keywords = <<-END
|
15
|
+
BEGIN END alias and begin break case
|
16
|
+
class def defined do else elsif end
|
17
|
+
ensure false for if in module next
|
18
|
+
nil not or redo rescue retry return
|
19
|
+
self super then true undef unless
|
20
|
+
until when while yield
|
21
|
+
END
|
22
|
+
return keywords.split(/\s+/)
|
23
|
+
end
|
24
|
+
|
25
|
+
@@ruby_keyword_table = ruby_keywords().inject({}) { |h, w| h[w] = true; h }
|
26
|
+
|
27
|
+
|
28
|
+
## escape ruby keywords
|
29
|
+
def escape_ruby_keyword(word)
|
30
|
+
return @@ruby_keyword_table[word] ? "_#{word}" : word
|
31
|
+
end
|
32
|
+
|
33
|
+
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
##
|
2
|
+
## $Rev: 44 $
|
3
|
+
## $Release: 0.3.0 $
|
4
|
+
## copyright(c) 2005 kuwata-lab.com all rights reserved.
|
5
|
+
##
|
6
|
+
|
7
|
+
|
8
|
+
require 'active_support/inflector'
|
9
|
+
|
10
|
+
module Kwatable
|
11
|
+
|
12
|
+
module TableHelper
|
13
|
+
|
14
|
+
def table_name(table)
|
15
|
+
#return table['model-name'] || table['name']
|
16
|
+
return table['name']
|
17
|
+
end
|
18
|
+
|
19
|
+
def table_class(table)
|
20
|
+
return table['class'] || Inflector.classify(table['name'])
|
21
|
+
end
|
22
|
+
|
23
|
+
def table_model(table)
|
24
|
+
#return Inflector.singularize(table_name(table))
|
25
|
+
return Inflector.underscore(table_class(table))
|
26
|
+
end
|
27
|
+
|
28
|
+
def table_display_column(table)
|
29
|
+
column = table['display-column']
|
30
|
+
column ||= table['columns'].find { |col| col['name'] == 'code' }
|
31
|
+
column ||= table['columns'].find { |col| col['name'] == 'name' }
|
32
|
+
return column
|
33
|
+
end
|
34
|
+
|
35
|
+
def table_ident_columns(table)
|
36
|
+
return table['columns'].find_all { |col| col['ident'] }
|
37
|
+
end
|
38
|
+
|
39
|
+
def table_ident_column(table)
|
40
|
+
return table['columns'].find { |col| col['ident'] }
|
41
|
+
end
|
42
|
+
|
43
|
+
def table_referrer_column(table, column)
|
44
|
+
return table['columns'].find { |col| col['ref'] && col['ref'].__id__ == column.__id__ }
|
45
|
+
end
|
46
|
+
|
47
|
+
## return reason if table should be skip modeling
|
48
|
+
def table_check_modeling(table)
|
49
|
+
reason = nil
|
50
|
+
if table['modeling'] == false
|
51
|
+
reason = "table['modeling'] == false"
|
52
|
+
elsif table['ident-columns'].length > 1
|
53
|
+
reason = "compound primary key"
|
54
|
+
elsif table['ident-columns'].length == 0
|
55
|
+
reason = "no primary-key"
|
56
|
+
end
|
57
|
+
return reason
|
58
|
+
end
|
59
|
+
|
60
|
+
end
|
61
|
+
|
62
|
+
end
|
@@ -0,0 +1,139 @@
|
|
1
|
+
<%
|
2
|
+
##
|
3
|
+
## kwatable template to generate Hibernate model class
|
4
|
+
##
|
5
|
+
## $Rev$
|
6
|
+
## $Release: 0.3.0 $
|
7
|
+
## copyright(c) 2005 kuwata-lab.com all rights reserved.
|
8
|
+
##
|
9
|
+
## <template-desc>generate Hibernate mapping files</template-desc>
|
10
|
+
## <template-properties>
|
11
|
+
## --collection=type : collection type (set/list/map/bag/array/primitive-array)
|
12
|
+
## --package=package : package of class
|
13
|
+
## </template-properties>
|
14
|
+
##
|
15
|
+
|
16
|
+
require 'kwatable/template/helper/common'
|
17
|
+
require 'kwatable/template/helper/table'
|
18
|
+
require 'kwatable/template/helper/column'
|
19
|
+
require 'kwatable/template/helper/java'
|
20
|
+
extend Kwatable::CommonHelper
|
21
|
+
extend Kwatable::TableHelper
|
22
|
+
extend Kwatable::ColumnHelper
|
23
|
+
extend Kwatable::JavaHelper
|
24
|
+
|
25
|
+
require 'active_support/inflector'
|
26
|
+
extend Inflector
|
27
|
+
|
28
|
+
# context check
|
29
|
+
context_var_required('@tables')
|
30
|
+
|
31
|
+
%>
|
32
|
+
<?xml version="1.0" ?>
|
33
|
+
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
|
34
|
+
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
|
35
|
+
<hibernate-mapping>
|
36
|
+
|
37
|
+
<%
|
38
|
+
|
39
|
+
##
|
40
|
+
## classes
|
41
|
+
##
|
42
|
+
for table in @tables
|
43
|
+
reason = table_check_modeling(table)
|
44
|
+
if reason
|
45
|
+
msg = "*** table '#{table['name']}' skipped. (reason: #{reason})"
|
46
|
+
$stderr.puts msg unless @options[?q]
|
47
|
+
next
|
48
|
+
end
|
49
|
+
table_name = table['name']
|
50
|
+
class_name = table_java_class(table, @properties[:package])
|
51
|
+
vendor = (table['vendor'] || {})['hibernate']
|
52
|
+
%>
|
53
|
+
<class name="<%= class_name %>" table="<%= table_name %>">
|
54
|
+
<%
|
55
|
+
|
56
|
+
##
|
57
|
+
## columns
|
58
|
+
##
|
59
|
+
for column in table['columns']
|
60
|
+
next if column['ref']
|
61
|
+
colname = column['name']
|
62
|
+
colattr = camel_case(column_attr(column), false)
|
63
|
+
coltype = column_java_type(column, true)
|
64
|
+
vendor = (column['vendor'] || {})['hibernate']
|
65
|
+
generator = vendor['generator'] if vendor
|
66
|
+
generator ||= column['serial'] ? 'native' : 'assigned'
|
67
|
+
|
68
|
+
if column['ident']
|
69
|
+
%>
|
70
|
+
<id name="<%= colattr %>" type="<%= coltype %>" column="<%= colname %>">
|
71
|
+
<generator class="<%= generator %>"/>
|
72
|
+
</id>
|
73
|
+
<%
|
74
|
+
else
|
75
|
+
%>
|
76
|
+
<property name="<%= colattr %>" type="<%= coltype %>" column="<%= colname %>"/>
|
77
|
+
<%
|
78
|
+
end
|
79
|
+
end if table['columns']
|
80
|
+
|
81
|
+
##
|
82
|
+
## references
|
83
|
+
##
|
84
|
+
for column in table['columns']
|
85
|
+
next unless column['ref']
|
86
|
+
refname = column_refname(column)
|
87
|
+
colattr = camel_case(column_attr(column), false)
|
88
|
+
colclass = table_java_class(column['ref']['table'], @properties[:package])
|
89
|
+
%>
|
90
|
+
<many-to-one name ="<%= camel_case(refname, false) %>" class="<%= colclass %>" column="<%= column['name'] %>"/>
|
91
|
+
<%
|
92
|
+
end if table['columns']
|
93
|
+
|
94
|
+
##
|
95
|
+
## relations
|
96
|
+
##
|
97
|
+
collection = @properties[:collection] || 'set'
|
98
|
+
if table['relations']
|
99
|
+
for relation in table['relations']
|
100
|
+
join_table = join_column = ''
|
101
|
+
case relation['kind']
|
102
|
+
when '1:1'
|
103
|
+
relattr = relation['attr'] || table_name(relation['table'])
|
104
|
+
%>
|
105
|
+
<one-to-one name="<%= camel_case(relattr, false) %> column="<%= column_attr(relation['columns'].first) %>"/>
|
106
|
+
<%
|
107
|
+
when '1:n'
|
108
|
+
relattr = relation['attr'] || Inflector.pluralize(table_name(relation['table']))
|
109
|
+
%>
|
110
|
+
<<%= collection %> name="<%= camel_case(relattr, false) %>">
|
111
|
+
<key column="<%= column_attr(relation['columns'].first) %>"/>
|
112
|
+
<one-to-many class="<%= table_class(relation['table']) %>"/>
|
113
|
+
</<%= collection %>>
|
114
|
+
<%
|
115
|
+
when 'n:n'
|
116
|
+
relattr = relation['attr'] || Inflector.pluralize(table_name(relation['table']))
|
117
|
+
tag = 'many-to-many'
|
118
|
+
join_table = relation['join-table']
|
119
|
+
join_table_clause = ' table="' + relation['join-table']['name'] + '"'
|
120
|
+
identcol1 = table_ident_column(table)
|
121
|
+
identcol2 = table_ident_column(relation['table'])
|
122
|
+
relcolumn1 = table_referrer_column(join_table, identcol1)
|
123
|
+
relcolumn2 = table_referrer_column(join_table, identcol2)
|
124
|
+
%>
|
125
|
+
<<%= collection %> name="<%= camel_case(relattr, false) %>" table="<%= join_table['name'] %>">
|
126
|
+
<key column="<%= relcolumn1['name'] %>"/>
|
127
|
+
<many-to-many class="<%= table_class(relation['table']) %>" column="<%= relcolumn2['name'] %>"/>
|
128
|
+
</<%= collection %>>
|
129
|
+
<%
|
130
|
+
end#case
|
131
|
+
end#for
|
132
|
+
end#if
|
133
|
+
%>
|
134
|
+
</class>
|
135
|
+
|
136
|
+
<%
|
137
|
+
end
|
138
|
+
%>
|
139
|
+
</hibernate-mapping>
|
@@ -0,0 +1,66 @@
|
|
1
|
+
<%
|
2
|
+
|
3
|
+
##
|
4
|
+
## kwatable template to generate Rails model class
|
5
|
+
##
|
6
|
+
## $Rev$
|
7
|
+
## $Release: 0.3.0 $
|
8
|
+
## copyright(c) 2005 kuwata-lab.com all rights reserved.
|
9
|
+
##
|
10
|
+
## <template-desc>generate Rails model classes</template-desc>
|
11
|
+
## <template-properties>
|
12
|
+
## --lang=lang : language (ex. --lang=ja)
|
13
|
+
## --encoding=encoding : encoding (ex. --encoding=UTF8)
|
14
|
+
## --session-token : use session token
|
15
|
+
## </template-properties>
|
16
|
+
## <template-details>
|
17
|
+
## * if template property '--session-token' is specified, create the library
|
18
|
+
## file 'lib/session-token.rb' with the following code (this library should
|
19
|
+
## be shared with view-helper).
|
20
|
+
## ------- lib/session-token-helper.rb' ----------
|
21
|
+
## require 'digest/md5'
|
22
|
+
## module SessionTokenHelper
|
23
|
+
## private
|
24
|
+
## def session_token()
|
25
|
+
## session['session_token'] ||= Digest::MD5.hexdigest("#{session.id}#{rand()}")
|
26
|
+
## end
|
27
|
+
## end
|
28
|
+
## -----------------------------------------------
|
29
|
+
## and add the following code into 'app/controllers/application.rb'.
|
30
|
+
## ------- app/controllers/application.rb --------
|
31
|
+
## require 'session-token-helper'
|
32
|
+
## class ApplicationController < ActionController::Base
|
33
|
+
## include SessionTokenHelper
|
34
|
+
## private
|
35
|
+
## def valid_session_token?()
|
36
|
+
## if session_token() == params[:session_token]
|
37
|
+
## return true
|
38
|
+
## else
|
39
|
+
## flash[:warning] = 'Invalid session token.'
|
40
|
+
## redirect_to '/403.html'
|
41
|
+
## return false
|
42
|
+
## end
|
43
|
+
## end
|
44
|
+
## end
|
45
|
+
## -----------------------------------------------
|
46
|
+
## </template-details>
|
47
|
+
##
|
48
|
+
|
49
|
+
|
50
|
+
require 'kwatable/template/helper/common'
|
51
|
+
require 'kwatable/template/helper/table'
|
52
|
+
require 'kwatable/template/helper/column'
|
53
|
+
require 'kwatable/template/helper/label'
|
54
|
+
extend Kwatable::CommonHelper
|
55
|
+
extend Kwatable::TableHelper
|
56
|
+
extend Kwatable::ColumnHelper
|
57
|
+
extend Kwatable::LabelHelper
|
58
|
+
|
59
|
+
|
60
|
+
@output_files = apply_subtemplate_for_each_tables(@tables) { |table|
|
61
|
+
output_filename = "#{Inflector.pluralize(table_model(table))}_controller.rb"
|
62
|
+
output_filename
|
63
|
+
}
|
64
|
+
|
65
|
+
|
66
|
+
%>
|