yml2erd 0.9.6 → 0.9.7

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: eec493eb97de029cef8b42b05732a2d1b6ba1488
4
- data.tar.gz: c61166dbdd32c0ba012a5b41d6558d9c81e94db7
3
+ metadata.gz: 30861d60e3b7ec898d77d7651b115801e4a2411e
4
+ data.tar.gz: c89d8ff74ca28c0ffd9b8289e5c403acf90867f9
5
5
  SHA512:
6
- metadata.gz: 5387b5c7e949e14b8c533d8c8cf28cde000afb494433699a337a15d43468eb65e4e02078f4d756cf3c086e9c6bb18e595f30be908f37776dd75eeba8720cd75c
7
- data.tar.gz: af86f9eca39331122b73dc135939f25817d9744d13923b88a5f9883f24c19e8479c0d35ff93c8f4d1a9c8310f042548182134e3e6e69b562d03782d1d05fd26f
6
+ metadata.gz: 0d63ce75a0dc3b53a456ef574c238ac2da6f9369931783e6f9fbaea0126425994f8f92e3212298d486429bf7df100e32316eca3d1310c3336aea5ca03a749493
7
+ data.tar.gz: 0629c73061313f60e203098664648d8f7117bd5f07c59dba1894d4f5fe978352397a2f2ab2beb0b8203eea7edbe6b34ee9c3e0458d0f5ec5cb6b09d21b543c2b
data/lib/yml2erd/cli.rb CHANGED
@@ -23,7 +23,12 @@ module Yml2erd
23
23
 
24
24
  private
25
25
 
26
+ def abort_unless_yml(path)
27
+ abort 'file must be a .yml file' unless path =~ /\.yml$/
28
+ end
29
+
26
30
  def load_yml(path)
31
+ abort_unless_yml(path)
27
32
  abort "#{path} is not found, please check your .yml file path" unless File.exists?(path)
28
33
  yml = YAML.load_file(path)
29
34
  Yml2erd::Parser.parse(yml)
@@ -14,8 +14,9 @@ module Yml2erd
14
14
 
15
15
  table_names.each do |table_name|
16
16
  columns = ''
17
+ schema_structure.shared_columns.each { |key, value| columns += build_column(key, value) } unless schema_structure.shared_columns.nil?
17
18
  schema_structure.columns(table_name).each do |column|
18
- column.each { |key, value| columns += "#{key}: <FONT color='gray'>#{value}</FONT><BR/>" }
19
+ column.each { |key, value| columns += build_column(key, value) }
19
20
  end
20
21
 
21
22
  index = schema_structure.index(table_name)
@@ -25,8 +26,8 @@ module Yml2erd
25
26
 
26
27
  table_names.each do |table_name|
27
28
  if !schema_structure.relation(table_name).nil? && \
28
- !schema_structure.relation(table_name)['belongs_to'].nil?
29
- schema_structure.relation(table_name)['belongs_to'].each do |belongs_to|
29
+ !schema_structure.belongs(table_name).nil?
30
+ schema_structure.belongs(table_name).each do |belongs_to|
30
31
  g.add_edges(belongs_to, table_name)
31
32
  end
32
33
  end
@@ -46,6 +47,10 @@ module Yml2erd
46
47
  "<{<FONT POINT-SIZE='15'>#{table_name}</FONT> | #{columns}}>"
47
48
  end
48
49
  end
50
+
51
+ def build_column(name, type)
52
+ "#{name}: <FONT color='gray'>#{type}</FONT><BR/>"
53
+ end
49
54
  end
50
55
  end
51
56
  end
@@ -1,7 +1,7 @@
1
1
  module Yml2erd
2
2
  class SchemaStructure
3
3
  class Validator
4
- RELATIONS_KEY = %w(belongs_to has_many)
4
+ RELATIONS_KEY = %w(belongs_to has_many has_one)
5
5
 
6
6
  class InvalidKeyNameError < StandardError;end
7
7
  class InvalidYmlStructureError < StandardError;end
@@ -11,14 +11,19 @@ module Yml2erd
11
11
  # returns an array which has table_names like bellow
12
12
  # => ["users", "user_auths", "posts", "companies"]
13
13
  def table_names
14
- structure_yml.to_a.map { |s| s.first }
14
+ structure_yml.to_a.map { |s| s.first }.select{ |tn| tn != 'shared_columns' }
15
15
  end
16
16
 
17
17
  # returns a hash like below
18
- # { users: { belongs_to: ['user_auths', 'companies'], has_many: ['posts'] } }
18
+ # { belongs_to: ['user_auths', 'companies'], has_many: ['posts'] }
19
19
  def relation(table_name)
20
20
  relations = structure_yml[table_name]['relations']
21
- # { table_name.to_sym => relations }
21
+ end
22
+
23
+ # returns an array like below
24
+ # ['user_auths', 'companies']
25
+ def belongs(table_name)
26
+ relation(table_name)['belongs_to']
22
27
  end
23
28
 
24
29
  def relations
@@ -42,5 +47,11 @@ module Yml2erd
42
47
  def index(table_name)
43
48
  structure_yml[table_name]['index']
44
49
  end
50
+
51
+ # returns a hash like below
52
+ # => { "id"=>"integer", "created_at"=>"datetime", "updated_at"=>"datetime" }
53
+ def shared_columns
54
+ structure_yml['shared_columns']
55
+ end
45
56
  end
46
57
  end
@@ -1,3 +1,3 @@
1
1
  module Yml2erd
2
- VERSION = "0.9.6"
2
+ VERSION = "0.9.7"
3
3
  end
data/sample.yml CHANGED
@@ -1,23 +1,21 @@
1
+ shared_columns:
2
+ id: integer
3
+ created_at: datetime
4
+ updated_at: datetime
1
5
  companies:
2
6
  columns:
3
- - id: integer
4
7
  - name: string
5
8
  - address: string
6
- - created_at: datetime
7
- - updated_at: datetime
8
9
  relations:
9
10
  has_many:
10
11
  - users
11
12
  users:
12
13
  columns:
13
- - id: integer
14
14
  - crypted_password: string
15
15
  - email: string
16
16
  - password_salt: string
17
17
  - auth_token: string
18
18
  - company_id: integer
19
- - created_at: datetime
20
- - updated_at: datetime
21
19
  - deleted_at: datetime
22
20
  index:
23
21
  - email
@@ -29,34 +27,25 @@ users:
29
27
  - user_logs
30
28
  roles:
31
29
  columns:
32
- - id: integer
33
30
  - title: string
34
31
  - user_id: intger
35
- - created_at: datetime
36
- - updated_at: datetime
37
32
  relations:
38
33
  belongs_to:
39
34
  - users
40
35
  user_logs:
41
36
  columns:
42
- - id: integer
43
37
  - recently_signed_in: datetime
44
38
  - user_id: integer
45
- - created_at: datetime
46
- - updated_at: datetime
47
39
  relations:
48
40
  belongs_to:
49
41
  - users
50
42
  posts:
51
43
  columns:
52
- - id: integer
53
44
  - title: string
54
45
  - body: text
55
46
  - attachment_path: string
56
47
  - deleted_at: datetime
57
48
  - user_id: integer
58
- - created_at: datetime
59
- - updated_at: datetime
60
49
  index:
61
50
  - user_id
62
51
  relations:
data/yml2erd.gemspec CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
10
10
  spec.email = ["suenagaryoutaabc@gmail.com"]
11
11
 
12
12
  spec.summary = %q{This gem allows us to generate an erd easily.}
13
- spec.description = %q{Convert erd from a simple yml}
13
+ spec.description = %q{This gem generates erd from a simple yml.}
14
14
  spec.homepage = "https://github.com/asmsuechan/yml2erd"
15
15
  spec.license = "MIT"
16
16
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yml2erd
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.6
4
+ version: 0.9.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - asmsuechan
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-12-27 00:00:00.000000000 Z
11
+ date: 2016-12-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ruby-graphviz
@@ -136,7 +136,7 @@ dependencies:
136
136
  - - ">="
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
- description: Convert erd from a simple yml
139
+ description: This gem generates erd from a simple yml.
140
140
  email:
141
141
  - suenagaryoutaabc@gmail.com
142
142
  executables: