metamodel 0.1.8 → 0.1.9

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 150f0889587f6a3379d1dd291465dc4aea20c5c0
4
- data.tar.gz: 616832c86c039688d8c06fdcc59076aa8745704f
3
+ metadata.gz: f0d8ca3a3bfe2be2fff493e0a8a6ee19f56640df
4
+ data.tar.gz: 4b704b41431dcc15cf3d7851512de6ec637e973d
5
5
  SHA512:
6
- metadata.gz: f6a3cd5f7a04e4284887c52574cb50a7622f6aece76de076881176c1a803dffd785e5d9778d8d94aa7de6e4fcb2c0f038ad8acafa897e2be9adba9648b7b341e
7
- data.tar.gz: 8b2e17fc792955ce237d907e71024a1637fa70d414716c49ffe98419b10f7efa44bf3e0a8634edfe3fe0caa30e95476ce649de3df52f4769b0f9c7cfe4b112c9
6
+ metadata.gz: c37a823538cc4dc169e80a0aa1dae3839fb275a9e4d668081cbc80e7479b1936c93565249ab8cb572d7d17f35be408c03d5bf2226c9d17791217066dc67eb28b
7
+ data.tar.gz: e5ee4d3459de834213f65b80817130f7402076f7a86d93edbf22f2f25f51c494b0950c11da6124d9680db05cfa3bc33b8e9a0e3b7c4f6eaa1e1799f2c266781d
data/lib/metamodel.rb CHANGED
@@ -1,5 +1,3 @@
1
- require 'active_support/core_ext/string/strip'
2
-
3
1
  module MetaModel
4
2
 
5
3
  class PlainInformative < StandardError; end
@@ -14,9 +12,11 @@ module MetaModel
14
12
 
15
13
  require 'pathname'
16
14
  require 'active_support/inflector'
15
+ require 'active_support/core_ext/string'
17
16
 
18
17
  require 'metamodel/version'
19
18
  require 'metamodel/config'
19
+ require 'metamodel/erbal_template'
20
20
 
21
21
  # Loaded immediately after dependencies to ensure proper override of their
22
22
  # UI methods.
@@ -67,7 +67,7 @@ module MetaModel
67
67
  #
68
68
  def update_initialize_method
69
69
  template = File.read File.expand_path(File.join(File.dirname(__FILE__), "../template/metamodel.swift"))
70
- result = ErbalT::render_from_hash(template, { :models => @models })
70
+ result = Renderer::ErbalTemplate::render_from_hash(template, { :models => @models })
71
71
  model_path = Pathname.new("./metamodel/MetaModel/MetaModel.swift")
72
72
  File.write model_path, result
73
73
  end
@@ -120,16 +120,6 @@ module MetaModel
120
120
 
121
121
  private
122
122
 
123
- class ErbalT < OpenStruct
124
- def self.render_from_hash(t, h)
125
- ErbalT.new(h).render(t)
126
- end
127
-
128
- def render(template)
129
- ERB.new(template).result(binding)
130
- end
131
- end
132
-
133
123
  CURRENT_SUPPORTED_BUILT_IN_TYPES = %w[
134
124
  Int
135
125
  Double
@@ -1,21 +1,9 @@
1
- require 'erb'
2
- require 'ostruct'
3
1
  require 'xcodeproj'
4
2
 
5
3
  module MetaModel
6
4
  class Command
7
5
  class Build
8
6
  class Renderer
9
- class ErbalT < OpenStruct
10
- def self.render_from_hash(t, h)
11
- ErbalT.new(h).render(t)
12
- end
13
-
14
- def render(template)
15
- ERB.new(template).result(binding)
16
- end
17
- end
18
-
19
7
  class << self
20
8
 
21
9
  def templates
@@ -44,7 +32,7 @@ module MetaModel
44
32
  file_refs = []
45
33
  models.each do |model|
46
34
  result = templates.map { |template|
47
- ErbalT::render_from_hash(template, { :model => model })
35
+ ErbalTemplate::render_from_hash(template, { :model => model })
48
36
  }.join("\n")
49
37
  model_path = Pathname.new("./metamodel/MetaModel/#{model.name}.swift")
50
38
  File.write model_path, result
@@ -21,8 +21,10 @@ module MetaModel
21
21
  major_model.associations << association
22
22
  association.major_model = major_model
23
23
  association.secondary_model = name_model_hash[association.secondary_model]
24
+ size = association.through ? 3 : 2
25
+ association.through = name_model_hash[association.through]
24
26
  raise Informative, "Associations not satisfied in `Metafile`" \
25
- unless [association.major_model, association.secondary_model].compact.size == 2
27
+ unless [association.major_model, association.secondary_model, association.through].compact.size == size
26
28
  association
27
29
  end
28
30
 
@@ -35,21 +37,21 @@ module MetaModel
35
37
  end
36
38
  remain
37
39
  end
38
- raise Informative, "Unsatisfied constraints in #{satisfy_constraint.map { |x| x.major_model.name }}" \
39
- if satisfy_constraint.size > 0
40
+ raise Informative, "Unsatisfied constraints in #{satisfy_constraint.map \
41
+ { |x| x.debug_description }}" \
42
+ if satisfy_constraint.size > 0
40
43
 
41
44
  @associations.each do |association|
42
45
  major_model = association.major_model
43
46
  secondary_model = association.secondary_model
44
47
  case association.relation
45
- when :has_one then
46
- property = Record::Property.new(major_model.foreign_id, :int, :foreign, :default => 0)
47
- secondary_model.properties << property
48
- when :has_many then
49
- property = Record::Property.new(major_model.foreign_id, :int, :foreign, :default => 0)
48
+ when :has_one, :has_many then
49
+ name = association.through ? association.through.foreign_id : major_model.foreign_id
50
+ property = Record::Property.new(name, :int, :foreign, :default => 0)
50
51
  secondary_model.properties << property
51
52
  when :belongs_to then
52
- property = Record::Property.new(secondary_model.foreign_id, :int, :foreign, :default => 0)
53
+ name = association.through ? association.through.foreign_id : secondary_model.foreign_id
54
+ property = Record::Property.new(name, :int, :foreign, :default => 0)
53
55
  major_model.properties << property
54
56
  end
55
57
  end
@@ -0,0 +1,14 @@
1
+ require 'erb'
2
+ require 'ostruct'
3
+
4
+ module MetaModel
5
+ class ErbalTemplate < OpenStruct
6
+ def self.render_from_hash(t, h)
7
+ ErbalTemplate.new(h).render(t)
8
+ end
9
+
10
+ def render(template)
11
+ ERB.new(template).result(binding)
12
+ end
13
+ end
14
+ end
@@ -4,10 +4,10 @@ module MetaModel
4
4
  attr_reader :name
5
5
  attr_reader :type
6
6
  attr_reader :relation
7
- attr_reader :through
8
7
  attr_reader :dependent
9
8
  attr_accessor :major_model
10
9
  attr_accessor :secondary_model
10
+ attr_accessor :through
11
11
 
12
12
  def initialize(name, major_model, secondary_model, relation, args)
13
13
  through = args[:through]
@@ -15,7 +15,7 @@ module MetaModel
15
15
 
16
16
  @name = name.to_s.camelize :lower
17
17
  @relation = relation
18
- @through = through
18
+ @through = through.to_s.camelize.singularize unless through.nil?
19
19
  @dependent = dependent
20
20
  @major_model = major_model
21
21
  @secondary_model = secondary_model
@@ -27,9 +27,18 @@ module MetaModel
27
27
  result = true
28
28
  result &= self.major_model == constraint.secondary_model
29
29
  result &= self.secondary_model == constraint.major_model
30
+ result &= self.through == constraint.through
31
+
30
32
  result &= case [self.relation, constraint.relation]
31
33
  when [:has_one, :belongs_to], [:belongs_to, :has_one] then true
32
- when [:belongs_to, :has_many], [:has_many, :belongs_to] then true
34
+ when [:belongs_to, :has_many] then
35
+ return false if self.dependent == :destroy
36
+ return true unless constraint.through
37
+ return false
38
+ when [:has_many, :belongs_to] then
39
+ return false if constraint.dependent == :destroy
40
+ return true unless self.through
41
+ return false
33
42
  when [:has_many, :has_many] then
34
43
  self.through == constraint.through
35
44
  else false
@@ -39,8 +48,8 @@ module MetaModel
39
48
 
40
49
  def secondary_model_instance
41
50
  case relation
42
- when :has_many, :has_one then "#{secondary_model.name}.findBy(#{major_model.foreign_id}: id)"
43
- when :belongs_to then "#{secondary_model.name}.findBy(id: #{secondary_model.foreign_id})"
51
+ when :has_many, :has_one then "#{secondary_model.name}.find(privateId)"
52
+ when :belongs_to then "#{secondary_model.name}.find(#{secondary_model.foreign_id})"
44
53
  else ""
45
54
  end
46
55
  end
@@ -51,6 +60,7 @@ module MetaModel
51
60
 
52
61
  def validate_association
53
62
  validate_dependent(@dependent)
63
+ validate_through(@through)
54
64
  end
55
65
 
56
66
  def validate_dependent(dependent)
@@ -60,6 +70,11 @@ module MetaModel
60
70
  unless supported_dependent_options.include? dependent
61
71
  end
62
72
 
73
+ def validate_through(through)
74
+ raise Informative, "belongs_to can't coexist with through." \
75
+ if !!through && @relation == :belongs_to
76
+ end
77
+
63
78
 
64
79
  #-------------------------------------------------------------------------#
65
80
 
@@ -79,9 +94,15 @@ module MetaModel
79
94
 
80
95
  def type
81
96
  case @relation
82
- when :has_one then secondary_model.name
83
- when :has_many then secondary_model.name
84
- when :belongs_to then secondary_model.name
97
+ when :has_one, :has_many, :belongs_to then secondary_model.name
98
+ end
99
+ end
100
+
101
+ def debug_description
102
+ if through
103
+ "#{major_model.name}.#{relation}.#{secondary_model.name}.through.#{through.name}.#{dependent}"
104
+ else
105
+ "#{major_model.name}.#{relation}.#{secondary_model.name}.#{dependent}"
85
106
  end
86
107
  end
87
108
  end
@@ -9,20 +9,26 @@ module MetaModel
9
9
  @name = name.to_s.camelize
10
10
  @properties = []
11
11
  @associations = []
12
-
13
- validate
14
12
  end
15
13
 
16
14
  def contains?(property)
17
15
  @properties.select { |prop| prop.name == property }.size > 0
18
16
  end
19
17
 
18
+ def all_foreign_properties
19
+ @properties.select { |element| element.is_foreign? }
20
+ end
21
+
20
22
  def properties_exclude_id
21
- @properties.select { |property| property.name != "id" }
23
+ properties_exclude_property "id"
24
+ end
25
+
26
+ def properties_exclude_property(property)
27
+ @properties.select { |element| element.name != property }
22
28
  end
23
29
 
24
30
  def foreign_id
25
- "#{name}_id".camelize(:lower)
31
+ "#{name}Id".camelize(:lower)
26
32
  end
27
33
 
28
34
  def table_name
@@ -33,18 +39,6 @@ module MetaModel
33
39
  "#{name}Relation"
34
40
  end
35
41
 
36
- def all_properties
37
- all_properties = properties.clone
38
- all_properties.push Property.primary_id
39
- all_properties
40
- end
41
-
42
- def validate
43
- property_keys = @properties.map { |property| property.name }
44
-
45
- @properties << Property.new(:id, :int, :unique, :default => 0) unless property_keys.include? "id"
46
- end
47
-
48
42
  def hash_value
49
43
  self.hash.to_s(16)
50
44
  end
@@ -85,10 +79,10 @@ module MetaModel
85
79
  foreign_sql = @properties.map do |property|
86
80
  next unless property.is_foreign?
87
81
  reference_table_name = property.type.tableize
88
- "FOREIGN KEY(#{property.name}) REFERENCES #{reference_table_name}(_id)"
82
+ "FOREIGN KEY(#{property.name}) REFERENCES #{reference_table_name}(privateId)"
89
83
  end
90
84
 
91
- table + "(_id INTEGER PRIMARY KEY, #{(main_sql + foreign_sql).compact.join(", ")});"
85
+ table + "(privateId INTEGER PRIMARY KEY, #{(main_sql + foreign_sql).compact.join(", ")});"
92
86
  end
93
87
 
94
88
  private
@@ -20,8 +20,8 @@ module MetaModel
20
20
 
21
21
  class << self
22
22
  def primary_id
23
- property = Property.new(:_id, :int, :primary)
24
- property.name = :_id
23
+ property = Property.new(:privateId, :int, :primary)
24
+ property.name = :privateId
25
25
  property
26
26
  end
27
27
  end
@@ -74,7 +74,7 @@ module MetaModel
74
74
  end
75
75
 
76
76
  def is_foreign?
77
- @modifiers.include? :foreign
77
+ @modifiers[:foreign]
78
78
  end
79
79
 
80
80
  def is_optional?
@@ -1,21 +1,11 @@
1
1
  // MARK: - Association
2
2
  <% model.associations.each do |association| %><% if association.has_many? %>
3
3
  <%= """public extension #{model.name} {
4
- func append#{association.type}(element: #{association.type}) {
5
- var element = element
6
- element.update(#{model.foreign_id}: id)
7
- }
8
-
9
- func create#{association.type}(#{association.secondary_model.property_key_type_pairs_without_property model.foreign_id}) -> #{association.type}? {
10
- return #{association.type}.create(#{association.secondary_model.property_key_value_pairs_without_property model.foreign_id}, #{model.foreign_id}: self.id)
11
- }
12
-
13
- func delete#{association.type}(id: Int) {
14
- #{association.type}.findBy(#{model.foreign_id}: id).first?.delete
15
- }
16
- var #{association.name}: [#{association.type}] {
4
+ var #{association.name}: #{association.secondary_model.relation_name} {
17
5
  get {
18
- return #{association.type}.filter(id: id).result
6
+ var result = #{association.type}.filter(#{model.foreign_id}: privateId)
7
+ result.#{model.foreign_id} = privateId
8
+ return result
19
9
  }
20
10
  set {
21
11
  #{association.name}.forEach { (element) in
@@ -24,19 +14,20 @@
24
14
  }
25
15
  newValue.forEach { (element) in
26
16
  var element = element
27
- element.update(#{model.foreign_id}: id)
17
+ element.update(#{model.foreign_id}: privateId)
28
18
  }
19
+ #{association.name}.#{model.foreign_id} = privateId
29
20
  }
30
21
  }
31
22
  }""" %><% elsif association.belongs_to? %>
32
23
  <%= """public extension #{model.name} {
33
24
  var #{association.name}: #{association.type}? {
34
25
  get {
35
- return #{association.secondary_model_instance}.first
26
+ return #{association.secondary_model_instance}
36
27
  }
37
28
  set {
38
29
  guard let newValue = newValue else { return }
39
- update(#{association.secondary_model.foreign_id}: newValue.id)
30
+ update(#{association.secondary_model.foreign_id}: newValue.privateId)
40
31
  }
41
32
  }
42
33
 
@@ -47,9 +38,9 @@
47
38
  return #{association.secondary_model_instance}.first
48
39
  }
49
40
  set {
50
- #{association.type}.findBy(#{model.foreign_id}: id).deleteAll
41
+ #{association.type}.findBy(#{model.foreign_id}: privateId).deleteAll
51
42
  guard var newValue = newValue else { return }
52
- newValue.update(#{model.foreign_id}: id)
43
+ newValue.update(#{model.foreign_id}: privateId)
53
44
  }
54
45
  }
55
46
  }"""%><% end %><% end %>
@@ -1,6 +1,8 @@
1
1
  // MAKR: - Helper
2
2
 
3
3
  public class <%= model.relation_name %>: Relation<<%= model.name %>> {
4
+ <% model.all_foreign_properties.each do |foreign_property| %><%= """var #{foreign_property.name} = 0
5
+ """%><% end %>
4
6
  override init() {
5
7
  super.init()
6
8
  self.select = "SELECT \(<%= model.name %>.tableName.unwrapped).* FROM \(<%= model.name %>.tableName.unwrapped)"
@@ -27,9 +29,23 @@ extension <%= model.name %> {
27
29
  <% model.properties.each_with_index do |property, index| %><%= """let #{property.name}: #{property.real_type} = values[#{index+1}] as! #{property.real_type}""" %>
28
30
  <% end %>
29
31
  self.init(<%= model.property_key_value_pairs true %>)
32
+
33
+ let privateId: Int64 = values[0] as! Int64
34
+ self.privateId = Int(privateId)
30
35
  }
31
36
  }
32
37
 
33
38
  extension <%= model.name %> {
34
- var itself: String { get { return "WHERE \(Article.tableName.unwrapped).\("id".unwrapped) = \(id)" } }
39
+ var itself: String { get { return "WHERE \(<%= model.name %>.tableName.unwrapped).\("privateId".unwrapped) = \(privateId)" } }
40
+ }
41
+
42
+ extension <%= model.relation_name %> {
43
+ func find(privateId: Int) -> Self {
44
+ return filter(privateId)
45
+ }
46
+
47
+ func filter(privateId: Int) -> Self {
48
+ self.filter.append("\"privateId\" = \(privateId)")
49
+ return self
50
+ }
35
51
  }
@@ -5,8 +5,8 @@ public extension <%= model.name %> {
5
5
  get {
6
6
  let deleteSQL = "DELETE FROM \(<%= model.name %>.tableName.unwrapped) \(itself)"
7
7
  executeSQL(deleteSQL)<% model.associations.each do |association| %>
8
- <%= association.secondary_model_instance + ".delete" if association.dependent == :destroy %>
9
- <%= association.secondary_model_instance + ".update(#{model.foreign_id}: 0)" if association.dependent == :nullify && model.contains?(model.foreign_id) %>
8
+ <%= association.secondary_model_instance + "?.delete" if association.dependent == :destroy %>
9
+ <%= association.secondary_model_instance + "?.update(#{model.foreign_id}: 0)" if association.dependent == :nullify && model.contains?(model.foreign_id) %>
10
10
  <% end %>
11
11
  return true
12
12
  }
@@ -1,4 +1,5 @@
1
1
  public struct <%= model.name %> {
2
+ var privateId: Int = 0
2
3
  <% model.properties.each do |property| %><%= """public var #{property.name}: #{property.type}""" %>
3
4
  <% end %>
4
5
  static let tableName = "<%= model.table_name %>"
@@ -6,6 +7,7 @@ public struct <%= model.name %> {
6
7
  public enum Column: String, Unwrapped {
7
8
  <% model.properties.each do |property| %><%= """case #{property.name} = \"#{property.name}\"""" %>
8
9
  <% end %>
10
+ case privateId = "privateId"
9
11
  var unwrapped: String { get { return self.rawValue.unwrapped } }
10
12
  }
11
13
 
@@ -19,14 +21,12 @@ public struct <%= model.name %> {
19
21
  }
20
22
 
21
23
  static public func create(<%= model.property_key_type_pairs %>) -> <%= model.name %>? {
22
- if <%= model.properties.select { |p| p.name.downcase.end_with? "id" }.map { |p| "#{p.name} == 0" }.join(" || ") %> { return nil }
24
+ //if <%= model.properties.select { |p| p.name.downcase.end_with? "id" }.map { |p| "#{p.name} == 0" }.push("false == true").join(" || ") %> { return nil }
23
25
 
24
26
  var columnsSQL: [<%= model.name %>.Column] = []
25
27
  var valuesSQL: [Unwrapped] = []
26
28
 
27
- columnsSQL.append(.id)
28
- valuesSQL.append(id)
29
- <% model.properties_exclude_id.each do |property| %><% if property.is_optional? %>
29
+ <% model.properties.each do |property| %><% if property.is_optional? %>
30
30
  <%= """if let #{property.name} = #{property.name} {
31
31
  columnsSQL.append(.#{property.name})
32
32
  valuesSQL.append(#{property.name})
@@ -35,7 +35,23 @@ public struct <%= model.name %> {
35
35
  valuesSQL.append(#{property.name})
36
36
  """ %><% end %><% end %>
37
37
  let insertSQL = "INSERT INTO \(tableName.unwrapped) (\(columnsSQL.map { $0.rawValue }.joinWithSeparator(", "))) VALUES (\(valuesSQL.map { $0.unwrapped }.joinWithSeparator(", ")))"
38
- guard let _ = executeSQL(insertSQL) else { return nil }
39
- return <%= model.name %>(<%= model.property_key_value_pairs %>)
38
+ guard let _ = executeSQL(insertSQL),
39
+ let lastInsertRowId = executeScalarSQL("SELECT last_insert_rowid();") as? Int64 else { return nil }
40
+ var result = <%= model.name %>(<%= model.property_key_value_pairs %>)
41
+ result.privateId = Int(lastInsertRowId)
42
+ return result
43
+ }
44
+ }
45
+
46
+ public extension <%= model.relation_name %> {
47
+ <% model.all_foreign_properties.each do |property| %>
48
+ func create(<%= model.property_key_type_pairs_without_property property.name %>) -> <%= model.name %>? {
49
+ return <%= model.name %>.create(<% if model.properties_exclude_property(property).count == 0 %><%= "#{property}: property" %><% else %><%= model.property_key_value_pairs %><% end %>)
40
50
  }
51
+
52
+ func append(element: <%= model.name %>) {
53
+ var element = element
54
+ element.<%= property.name %> = <%= property.name %>
55
+ }
56
+ <% end %>
41
57
  }
@@ -7,22 +7,22 @@ public extension <%= model.name %> {
7
7
 
8
8
  static var first: <%= model.name %>? {
9
9
  get {
10
- return <%= model.relation_name %>().orderBy(.id, asc: true).first
10
+ return <%= model.relation_name %>().orderBy(.privateId, asc: true).first
11
11
  }
12
12
  }
13
13
 
14
14
  static var last: <%= model.name %>? {
15
15
  get {
16
- return <%= model.relation_name %>().orderBy(.id, asc: false).first
16
+ return <%= model.relation_name %>().orderBy(.privateId, asc: false).first
17
17
  }
18
18
  }
19
19
 
20
20
  static func first(length: UInt) -> <%= model.relation_name %> {
21
- return <%= model.relation_name %>().orderBy(.id, asc: true).limit(length)
21
+ return <%= model.relation_name %>().orderBy(.privateId, asc: true).limit(length)
22
22
  }
23
23
 
24
24
  static func last(length: UInt) -> <%= model.relation_name %> {
25
- return <%= model.relation_name %>().orderBy(.id, asc: false).limit(length)
25
+ return <%= model.relation_name %>().orderBy(.privateId, asc: false).limit(length)
26
26
  }
27
27
 
28
28
  static func find(id: Int) -> <%= model.name %>? {
@@ -69,10 +69,6 @@ public extension <%= model.name %> {
69
69
  }
70
70
 
71
71
  public extension <%= model.relation_name %> {
72
- func find(id: Int) -> Self {
73
- return findBy(id: id)
74
- }
75
-
76
72
  func findBy(<%= model.property_key_type_pairs(true, true) %>) -> Self {
77
73
  var attributes: [<%= model.name %>.Column: Any] = [:]
78
74
  <% model.properties.each do |property| %><%= "if (#{property.name} != #{property.type_without_optional}DefaultValue) { attributes[.#{property.name}] = #{property.name} }" %>
@@ -31,7 +31,7 @@ public extension <%= model.name %> {
31
31
 
32
32
  var save: <%= model.name %> {
33
33
  mutating get {
34
- if let _ = <%= model.name %>.find(id) {
34
+ if let _ = <%= model.name %>.find(privateId) {
35
35
  update([<% column_values = model.properties.map do |property| %><% ".#{property.name}: #{property.name}" %><% end %><%= column_values.join(", ") %>])
36
36
  } else {
37
37
  <%= model.name %>.create(<%= model.property_key_value_pairs %>)
@@ -1,5 +1,5 @@
1
1
  module MetaModel
2
2
  # The version of the MetaModel command line tool.
3
3
  #
4
- VERSION = '0.1.8' unless defined? MetaModel::VERSION
4
+ VERSION = '0.1.9' unless defined? MetaModel::VERSION
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metamodel
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.8
4
+ version: 0.1.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Draveness Zuo
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-09-12 00:00:00.000000000 Z
11
+ date: 2016-09-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: claide
@@ -155,6 +155,7 @@ files:
155
155
  - lib/metamodel/command/generate.rb
156
156
  - lib/metamodel/command/init.rb
157
157
  - lib/metamodel/config.rb
158
+ - lib/metamodel/erbal_template.rb
158
159
  - lib/metamodel/record/association.rb
159
160
  - lib/metamodel/record/model.rb
160
161
  - lib/metamodel/record/property.rb