arql 0.2.2 → 0.2.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8e8fc504dce79a217260e4141983ed9688ea6b26bbb559293a91989f954a14ce
4
- data.tar.gz: '0826d7a38e803b7298afa8dce9f48e17246af86f6994f534e2168575f8081c86'
3
+ metadata.gz: 44604f0630f7b6308b9c53bf90b46bd9138b52fdec169baf46bf4e790adfc82b
4
+ data.tar.gz: 7efecc0c754d4f16eb31a19756de3d95a06d8d93440e480726d6df574827af13
5
5
  SHA512:
6
- metadata.gz: ff3be0324cd12c584969fc66d6a6859c9e41c2cae6f3c721fb2cce663cd53eee986f584ad3f00bf6c0ce38c29ad9a0c5623ff244262b3165119a11fdc1e8842d
7
- data.tar.gz: ff54d6fa435f403ecdbe53ff0acf8db12c4fc1fa79ef2809badeab7dcef79fbdd28d008458af871025ff90e00a0629a205cc6ef6bd95a2d853e2eceadbd27837
6
+ metadata.gz: d795bedb12d2bf39bbb2b5e394373b545e35a542e00110708915fa57b5ca2248f5ed64ee975283d0a3a23e3e4ed201a560fc3ba78dac4085650d6eef486c7fdf
7
+ data.tar.gz: 07c6aacfcd46fe3361ebbf977c553c32aad792cb7cd40ebdb9803f0cb76b32ace4bb4326808dd4db2c61be2f6e3e98ec1ee85753ced7e73ee85f8d1f6ffaf10d
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- arql (0.2.1)
4
+ arql (0.2.7)
5
5
  activerecord (~> 6.0.3)
6
6
  activesupport (~> 6.0.3)
7
7
  caxlsx (~> 3.0.2)
@@ -19,12 +19,12 @@ PATH
19
19
  GEM
20
20
  remote: https://rubygems.org/
21
21
  specs:
22
- activemodel (6.0.3.2)
23
- activesupport (= 6.0.3.2)
24
- activerecord (6.0.3.2)
25
- activemodel (= 6.0.3.2)
26
- activesupport (= 6.0.3.2)
27
- activesupport (6.0.3.2)
22
+ activemodel (6.0.3.3)
23
+ activesupport (= 6.0.3.3)
24
+ activerecord (6.0.3.3)
25
+ activemodel (= 6.0.3.3)
26
+ activesupport (= 6.0.3.3)
27
+ activesupport (6.0.3.3)
28
28
  concurrent-ruby (~> 1.0, >= 1.0.2)
29
29
  i18n (>= 0.7, < 2)
30
30
  minitest (~> 5.1)
@@ -44,7 +44,7 @@ GEM
44
44
  method_source (1.0.0)
45
45
  mimemagic (0.3.5)
46
46
  mini_portile2 (2.4.0)
47
- minitest (5.14.1)
47
+ minitest (5.14.2)
48
48
  mysql2 (0.5.3)
49
49
  net-ssh (6.1.0)
50
50
  net-ssh-gateway (2.0.0)
@@ -5,25 +5,29 @@ module Arql::Commands
5
5
  class << self
6
6
  def models
7
7
  t = []
8
- t << ['Table Name', 'Model Class', 'Abbr']
8
+ t << ['Table Name', 'Model Class', 'Abbr', 'Comment']
9
9
  t << nil
10
10
  Arql::Definition.models.each do |definition|
11
- t << [definition[:table], definition[:model].name, definition[:abbr] || '']
11
+ t << [definition[:table], definition[:model].name, definition[:abbr] || '', definition[:comment] || '']
12
12
  end
13
13
  t
14
14
  end
15
15
 
16
- def models_table
16
+ def models_table(regexp)
17
17
  Terminal::Table.new do |t|
18
- models.each { |row| t << (row || :separator) }
18
+ models.each_with_index { |row, idx| t << (row || :separator) if row.nil? ||
19
+ regexp.nil? ||
20
+ idx.zero? ||
21
+ row.any? { |e| e =~ regexp }
22
+ }
19
23
  end
20
24
  end
21
25
  end
22
26
  end
23
27
 
24
- Pry.commands.block_command 'm' do
28
+ Pry.commands.block_command 'm' do |regexp|
25
29
  puts
26
- puts Models::models_table
30
+ puts Models::models_table(regexp.try { |e| eval(e) })
27
31
  end
28
32
 
29
33
  Pry.commands.alias_command 'l', 'm'
@@ -83,11 +83,12 @@ module Arql
83
83
  @@models = []
84
84
  ActiveRecord::Base.connection.tap do |conn|
85
85
  conn.tables.each do |table_name|
86
+ table_comment = conn.table_comment(table_name)
86
87
  conn.primary_key(table_name).tap do |pkey|
87
88
  table_name.camelize.tap do |const_name|
88
89
  const_name = 'Modul' if const_name == 'Module'
89
90
  const_name = 'Clazz' if const_name == 'Class'
90
- Class.new(ActiveRecord::Base) do
91
+ Class.new(::ArqlModel) do
91
92
  include Arql::Extension
92
93
  self.primary_key = pkey
93
94
  self.table_name = table_name
@@ -106,16 +107,22 @@ module Arql
106
107
  end
107
108
  end.tap do |clazz|
108
109
  Object.const_set(const_name, clazz).tap do |const|
109
- const_name.gsub(/[a-z]*/, '').tap do |abbr|
110
- unless Object.const_defined?(abbr)
111
- Object.const_set abbr, const
112
- abbr_const = abbr
110
+ const_name.gsub(/[a-z]*/, '').tap do |bare_abbr|
111
+ abbr_const = nil
112
+ 9.times do |idx|
113
+ abbr = idx.zero? ? bare_abbr : "#{bare_abbr}#{idx+1}"
114
+ unless Object.const_defined?(abbr)
115
+ Object.const_set abbr, const
116
+ abbr_const = abbr
117
+ break
118
+ end
113
119
  end
114
120
 
115
121
  @@models << {
116
122
  model: const,
117
123
  abbr: abbr_const,
118
- table: table_name
124
+ table: table_name,
125
+ comment: table_comment
119
126
  }
120
127
  end
121
128
  end
@@ -133,12 +140,14 @@ module Arql
133
140
  @@options = options
134
141
  @@models = []
135
142
  ActiveRecord::Base.connection.tap do |conn|
143
+ Object.const_set('ArqlModel', Class.new(ActiveRecord::Base) { self.abstract_class = true })
136
144
  conn.tables.each do |table_name|
145
+ table_comment = conn.table_comment(table_name)
137
146
  conn.primary_key(table_name).tap do |pkey|
138
147
  table_name.camelize.tap do |const_name|
139
148
  const_name = 'Modul' if const_name == 'Module'
140
149
  const_name = 'Clazz' if const_name == 'Class'
141
- Class.new(ActiveRecord::Base) do
150
+ Class.new(::ArqlModel) do
142
151
  include Arql::Extension
143
152
  self.primary_key = pkey
144
153
  self.table_name = table_name
@@ -157,16 +166,22 @@ module Arql
157
166
  end
158
167
  end.tap do |clazz|
159
168
  Object.const_set(const_name, clazz).tap do |const|
160
- const_name.gsub(/[a-z]*/, '').tap do |abbr|
161
- unless Object.const_defined?(abbr)
162
- Object.const_set abbr, const
163
- abbr_const = abbr
169
+ const_name.gsub(/[a-z]*/, '').tap do |bare_abbr|
170
+ abbr_const = nil
171
+ 9.times do |idx|
172
+ abbr = idx.zero? ? bare_abbr : "#{bare_abbr}#{idx+1}"
173
+ unless Object.const_defined?(abbr)
174
+ Object.const_set abbr, const
175
+ abbr_const = abbr
176
+ break
177
+ end
164
178
  end
165
179
 
166
180
  @@models << {
167
181
  model: const,
168
182
  abbr: abbr_const,
169
- table: table_name
183
+ table: table_name,
184
+ comment: table_comment
170
185
  }
171
186
  end
172
187
  end
@@ -178,8 +193,8 @@ module Arql
178
193
  end
179
194
 
180
195
  ::ActiveRecord::Relation.class_eval do
181
- def t(*attrs)
182
- records.t(*attrs)
196
+ def t(*attrs, **options)
197
+ records.t(*attrs, **options)
183
198
  end
184
199
 
185
200
  def v
@@ -13,8 +13,18 @@ class Array
13
13
  end.join("\n")
14
14
  end
15
15
 
16
- def t(*attrs)
17
- if attrs.present? && present? && first.is_a?(ActiveRecord::Base)
16
+ def t(*attrs, **options)
17
+ if (attrs.present? || options.present? && options[:except]) && present? && first.is_a?(ActiveRecord::Base)
18
+ column_names = first.attribute_names.map(&:to_sym)
19
+ attrs = attrs.flat_map { |e| e.is_a?(Regexp) ? column_names.grep(e) : e }.uniq
20
+ if options.present? && options[:except]
21
+ attrs = column_names if attrs.empty?
22
+ if options[:except].is_a?(Regexp)
23
+ attrs.reject! { |e| e =~ options[:except] }
24
+ else
25
+ attrs -= [options[:except]].flatten
26
+ end
27
+ end
18
28
  puts Terminal::Table.new { |t|
19
29
  t << attrs
20
30
  t << :separator
@@ -1,3 +1,3 @@
1
1
  module Arql
2
- VERSION = "0.2.2"
2
+ VERSION = "0.2.7"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: arql
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.2.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Liu Xiang
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-09-21 00:00:00.000000000 Z
11
+ date: 2020-12-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mysql2