flextures 4.0.1 → 4.1.0

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
  SHA1:
3
- metadata.gz: 8328cf4e63d076ce5c3f3c43d21587e2071d4bf0
4
- data.tar.gz: cb2dbb205578cca24ca5aa0f6119d9faf52a9c75
3
+ metadata.gz: 2712b12b0de4f85effbdb3be89c88fc0217397ef
4
+ data.tar.gz: 348adf4807760f5155eaa8d3b3e9b0d3a702aff2
5
5
  SHA512:
6
- metadata.gz: 03d903f64bf6cd1164a0a17b21709f653cf07162ac3a1987add57c9b6551ce6559115a533c164377ce219b8b82618d558c69e912882beeed94ac475cc57d76df
7
- data.tar.gz: 623544ec5c0cd3a639002e20a14a3e9757ffaae977368993fec9f71a410fa00c8904090a979f953ab8bd9a9c11228c8a24a85d11b7ac771af604937e30b60d87
6
+ metadata.gz: bbc454cc0aa60de6d9562dced99c7a5c13bf2eb2a3dc4ccb83c92b5015bf254269a45650c11224d19265be01f94a9b216930e8a729d85db6c27cc1805199b0b2
7
+ data.tar.gz: 487d9167c8150ff3e416ef02db0d2147526694c7004205cc386d0061b4f9c4a81b70b6e7e4067f2c6a00da3417aaf0b12d3addb1c5a83513c481ceff55d83aba
data/Gemfile.lock CHANGED
@@ -1,17 +1,31 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- flextures (4.0.1)
4
+ flextures (4.1.0)
5
+ activerecord
6
+ activerecord-import
7
+ activesupport
5
8
 
6
9
  GEM
7
10
  remote: https://rubygems.org/
8
11
  specs:
9
- activesupport (4.2.5.2)
12
+ activemodel (4.2.6)
13
+ activesupport (= 4.2.6)
14
+ builder (~> 3.1)
15
+ activerecord (4.2.6)
16
+ activemodel (= 4.2.6)
17
+ activesupport (= 4.2.6)
18
+ arel (~> 6.0)
19
+ activerecord-import (0.13.0)
20
+ activerecord (>= 3.0)
21
+ activesupport (4.2.6)
10
22
  i18n (~> 0.7)
11
23
  json (~> 1.7, >= 1.7.7)
12
24
  minitest (~> 5.1)
13
25
  thread_safe (~> 0.3, >= 0.3.4)
14
26
  tzinfo (~> 1.1)
27
+ arel (6.0.3)
28
+ builder (3.2.2)
15
29
  i18n (0.7.0)
16
30
  json (1.8.3)
17
31
  minitest (5.4.0)
@@ -34,7 +48,6 @@ PLATFORMS
34
48
  ruby
35
49
 
36
50
  DEPENDENCIES
37
- activesupport
38
51
  bundler (~> 1.6)
39
52
  flextures!
40
53
  minitest (= 5.4.0)
@@ -45,4 +58,4 @@ DEPENDENCIES
45
58
  rake
46
59
 
47
60
  BUNDLED WITH
48
- 1.10.6
61
+ 1.11.2
data/flextures.gemspec CHANGED
@@ -15,12 +15,13 @@ Gem::Specification.new do |spec|
15
15
 
16
16
  spec.files = `git ls-files -z`.split("\x0")
17
17
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
- #spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
18
  spec.test_files = ["test/unit/flextures_args_test.rb"]
20
19
  spec.require_paths = ["lib"]
21
20
 
21
+ spec.add_dependency "activerecord"
22
+ spec.add_dependency "activesupport"
23
+ spec.add_dependency "activerecord-import"
24
+
22
25
  spec.add_development_dependency "bundler", "~> 1.6"
23
26
  spec.add_development_dependency "rake"
24
- spec.add_development_dependency "activesupport"
25
- #spec.add_development_dependency "minitest", "5.4.0"
26
27
  end
data/lib/flextures.rb CHANGED
@@ -1,6 +1,7 @@
1
+ require 'active_record'
2
+
1
3
  require 'flextures/version'
2
4
  require 'flextures/flextures_base_config'
3
- require 'flextures/flextures_extension_modules'
4
5
  require 'flextures/flextures'
5
6
  require 'flextures/flextures_factory'
6
7
  require 'flextures/flextures_loader'
@@ -1,31 +1,28 @@
1
- require 'ostruct'
2
- require 'csv'
3
1
  require "flextures/flextures_base_config"
4
- require "flextures/flextures_extension_modules"
5
2
  require "flextures/flextures_factory"
6
3
 
7
4
  module Flextures
8
5
  # guessing ActiveRecord Model name by table_name and create
9
6
  # @params [String|Symbol] table_name
10
7
  # @params [ActiveRecord::Base] model class
11
- def self.create_model( table_name )
8
+ def self.create_model(table_name)
12
9
  # when Model is defined in FactoryFilter
13
- a = ->{
10
+ a = -> do
14
11
  f = Factory::FACTORIES[table_name.to_sym]
15
12
  f && f[:model]
16
- }
13
+ end
17
14
  # when program can guess Model name by table_name
18
- b = ->{
15
+ b = -> do
19
16
  begin
20
17
  table_name.singularize.camelize.constantize
21
18
  rescue => e
22
19
  nil
23
20
  end
24
- }
21
+ end
25
22
  # when cannot guess Model name
26
- c = ->{
23
+ c = -> do
27
24
  Class.new(ActiveRecord::Base){ |o| o.table_name=table_name }
28
- }
25
+ end
29
26
  a.call || b.call || c.call
30
27
  end
31
28
 
@@ -57,7 +54,7 @@ module Flextures
57
54
  end
58
55
  end
59
56
 
60
- def self.delete_tables( *tables )
57
+ def self.delete_tables(*tables)
61
58
  tables.each do |name|
62
59
  # if 'name' variable is 'database view', raise error
63
60
  begin
@@ -69,7 +66,7 @@ module Flextures
69
66
 
70
67
  # It is debug method to use like 'tab' method
71
68
  # @params [Proc] dumper write dump information
72
- def self.table_tap( &dumper )
69
+ def self.table_tap(&dumper)
73
70
  tables = Flextures::deletable_tables
74
71
  tables.each do |name|
75
72
  # if 'name' variable is 'database view', raise error
@@ -84,12 +81,12 @@ module Flextures
84
81
  # parse arguments functions.
85
82
  module ARGS
86
83
  # parse rake ENV parameters
87
- def self.parse( option={} )
84
+ def self.parse(env={}, option={})
88
85
  table_names = []
89
- if v = (ENV["T"] or ENV["TABLE"])
86
+ if v = (env["T"] or env["TABLE"])
90
87
  table_names = v.split(',').map{ |name| { table: name, file: name } }
91
88
  end
92
- if v = (ENV["M"] or ENV["MODEL"])
89
+ if v = (env["M"] or env["MODEL"])
93
90
  table_names = v.split(',').map do |name|
94
91
  name = name.constantize.table_name
95
92
  { table: name, file: name }
@@ -98,30 +95,30 @@ module Flextures
98
95
 
99
96
  table_names = Flextures::deletable_tables.map{ |name| { table: name, file: name } } if table_names.empty?
100
97
 
101
- # parse ENV["FIXTURES"] paameter
102
- fixtures_args_parser =->(s){
98
+ # parse env["FIXTURES"] paameter
99
+ fixtures_args_parser = ->(s){
103
100
  names = s.split(',')
104
- if ENV["TABLE"] or ENV["T"] or ENV["MODEL"] or ENV["M"]
105
- [ table_names.first.merge( file: names.first ) ]
101
+ if env["TABLE"] or env["T"] or env["MODEL"] or env["M"]
102
+ [ table_names.first.merge(file: names.first) ]
106
103
  else
107
104
  names.map{ |name| { table: name, file: name } }
108
105
  end
109
106
  }
110
107
  # parse filename and define parameters.
111
- table_names = fixtures_args_parser.call ENV["FIXTURES"] if ENV["FIXTURES"]
112
- table_names = fixtures_args_parser.call ENV["FILE"] if ENV["FILE"]
113
- table_names = fixtures_args_parser.call ENV["F"] if ENV["F"]
108
+ table_names = fixtures_args_parser.call env["FIXTURES"] if env["FIXTURES"]
109
+ table_names = fixtures_args_parser.call env["FILE"] if env["FILE"]
110
+ table_names = fixtures_args_parser.call env["F"] if env["F"]
114
111
 
115
- table_names = table_names.map{ |option| option.merge( dir: ENV["DIR"] ) } if ENV["DIR"]
116
- table_names = table_names.map{ |option| option.merge( dir: ENV["D"] ) } if ENV["D"]
112
+ table_names = table_names.map{ |option| option.merge(dir: env["DIR"]) } if env["DIR"]
113
+ table_names = table_names.map{ |option| option.merge(dir: env["D"]) } if env["D"]
117
114
 
118
- table_names = table_names.map{ |option| option.merge( minus: ENV["MINUS"].to_s.split(",") ) } if ENV["MINUS"]
119
- table_names = table_names.map{ |option| option.merge( plus: ENV["PLUS"].to_s.split(",") ) } if ENV["PLUS"]
115
+ table_names = table_names.map{ |option| option.merge(minus: env["MINUS"].to_s.split(",")) } if env["MINUS"]
116
+ table_names = table_names.map{ |option| option.merge(plus: env["PLUS"].to_s.split(",")) } if env["PLUS"]
120
117
 
121
- table_names = table_names.map{ |option| option.merge( silent: true ) } if ENV["OPTION"].to_s.split(",").include?("silent")
122
- table_names = table_names.map{ |option| option.merge( unfilter: true ) } if ENV["OPTION"].to_s.split(",").include?("unfilter")
123
- table_names = table_names.map{ |option| option.merge( strict: true ) } if ENV["OPTION"].to_s.split(",").include?("strict")
124
- table_names = table_names.map{ |option| option.merge( stair: true ) } if ENV["OPTION"].to_s.split(",").include?("stair")
118
+ table_names = table_names.map{ |option| option.merge(silent: true) } if env["OPTION"].to_s.split(",").include?("silent")
119
+ table_names = table_names.map{ |option| option.merge(unfilter: true) } if env["OPTION"].to_s.split(",").include?("unfilter")
120
+ table_names = table_names.map{ |option| option.merge(strict: true) } if env["OPTION"].to_s.split(",").include?("strict")
121
+ table_names = table_names.map{ |option| option.merge(stair: true) } if env["OPTION"].to_s.split(",").include?("stair")
125
122
 
126
123
  # if mode is 'read mode' and file is not exist, value is not return.
127
124
  table_names.select!(&exist) if option[:mode] && option[:mode] == 'read'
@@ -130,8 +127,8 @@ module Flextures
130
127
 
131
128
  # check exist filename block
132
129
  def self.exist
133
- return->(name){ File.exists?( File.join(Flextures::Configuration.load_directory, "#{name}.csv") ) or
134
- File.exists?( File.join(Flextures::Configuration.load_directory, "#{name}.yml") ) }
130
+ return->(name){ File.exists?(File.join(Flextures::Configuration.load_directory, "#{name}.csv")) or
131
+ File.exists?(File.join(Flextures::Configuration.load_directory, "#{name}.yml")) }
135
132
  end
136
133
  end
137
134
  end
@@ -2,7 +2,6 @@ require 'ostruct'
2
2
  require 'csv'
3
3
 
4
4
  require 'flextures/flextures_base_config'
5
- require 'flextures/flextures_extension_modules'
6
5
  require 'flextures/flextures'
7
6
  require 'flextures/flextures_factory'
8
7
 
@@ -11,7 +10,7 @@ module Flextures
11
10
  module Command
12
11
  def self.dump
13
12
  Flextures::load_configurations
14
- table_names = Flextures::ARGS.parse
13
+ table_names = Flextures::ARGS.parse(ENV)
15
14
  puts "dumping..."
16
15
  case ENV["FORMAT"].to_s.to_sym
17
16
  when :yml,:yaml
@@ -25,7 +24,7 @@ module Flextures
25
24
 
26
25
  def self.load
27
26
  Flextures::load_configurations
28
- table_names = Flextures::ARGS.parse
27
+ table_names = Flextures::ARGS.parse(ENV)
29
28
  Flextures::init_tables unless ENV["T"] or ENV["TABLE"] or ENV["M"] or ENV["MODEL"] or ENV["F"] or ENV["FIXTUES"]
30
29
  file_format = ENV["FORMAT"]
31
30
  puts "loading..."
@@ -42,7 +41,7 @@ module Flextures
42
41
  # load and dump data
43
42
  def self.generate
44
43
  Flextures::load_configurations
45
- table_names = Flextures::ARGS.parse
44
+ table_names = Flextures::ARGS.parse(ENV)
46
45
  Flextures::init_tables unless ENV["T"] or ENV["TABLE"] or ENV["M"] or ENV["MODEL"] or ENV["F"] or ENV["FIXTUES"]
47
46
  file_format = ENV["FORMAT"]
48
47
  puts "generating..."
@@ -1,15 +1,33 @@
1
1
  require 'ostruct'
2
2
  require 'csv'
3
+ require 'erb'
4
+
5
+ require 'active_record'
6
+ require 'activerecord-import'
3
7
 
4
8
  require 'flextures/flextures_base_config'
5
- require 'flextures/flextures_extension_modules'
6
9
  require 'flextures/flextures'
7
10
  require 'flextures/flextures_factory'
8
11
 
9
12
  module Flextures
10
13
  # data loader
11
14
  class Loader
15
+ module ArrayEx
16
+ refine Array do
17
+ # @params [Array] keys hash keys
18
+ # @return [Hash] tanslated Hash data
19
+ def to_hash(keys)
20
+ values = self
21
+ values = values[0..keys.size-1] if keys.size < values.size
22
+ values = values+[nil]*(keys.size-values.size) if keys.size > values.size
23
+ [keys,values].transpose.reduce({}){ |h,pair| k,v=pair; h[k]=v; h }
24
+ end
25
+ end
26
+ end
27
+ using ArrayEx
28
+
12
29
  PARENT = Flextures
30
+ FORMATS = [ %i[csv erb], %i[erb csv], %i[csv], %i[yml erb], %i[erb yml], %i[yml] ]
13
31
 
14
32
  # column set default value
15
33
  COMPLETER = {
@@ -97,19 +115,17 @@ module Flextures
97
115
  end
98
116
 
99
117
  def self.cache?(params)
100
- if params.first.is_a?(Hash)
101
- param = params.first
102
- param[:cache] == true
103
- end
104
- end
118
+ return unless params.first.is_a?(Hash)
105
119
 
106
- def reset_cache
120
+ param = params.first
121
+ param[:cache] == true
107
122
  end
108
123
 
109
124
  # compare
110
125
  def equal_table_data?(src, dst)
111
126
  return false unless src.is_a?(Hash)
112
127
  return false unless dst.is_a?(Hash)
128
+
113
129
  (src.to_a - dst.to_a).empty?
114
130
  end
115
131
 
@@ -165,67 +181,82 @@ module Flextures
165
181
 
166
182
  # @return [Proc] order rule block (user Array#sort methd)
167
183
  def self.loading_order
168
- ->(a,b){
184
+ ->(a,b) do
169
185
  a = Flextures::Configuration.table_load_order.index(a) || -1
170
186
  b = Flextures::Configuration.table_load_order.index(b) || -1
171
187
  b <=> a
172
- }
188
+ end
173
189
  end
174
190
 
175
191
  # load fixture data
176
192
  # fixture file prefer YAML to CSV
177
193
  # @params [Hash] format file load format(table name, file name, options...)
178
194
  def self.load(format)
179
- file_name, method = file_exist(format)
180
- if method
181
- send(method, format)
195
+ file_name, *exts = file_exist(format)
196
+ format[:erb] = exts.include?(:erb)
197
+ method = exts.detect { |k| [:csv, :yml].include?(k) }
198
+
199
+ return unless self.file_loadable?(format, file_name)
200
+
201
+ klass, filter = self.create_model_filter(format, file_name, method)
202
+
203
+ case method
204
+ when :csv
205
+ self.load_csv(format, klass, filter, file_name)
206
+ when :yml
207
+ self.load_yml(format, klass, filter, file_name)
182
208
  else
183
209
  puts "Warning: #{file_name} is not exist!" unless format[:silent]
184
210
  end
185
211
  end
186
212
 
187
- # load CSV data
188
- # @params [Hash] format file load format(table name, file name, options...)
189
- def self.csv(format)
190
- type = :csv
191
- file_name, ext = file_exist(format, [type])
192
- return unless self.file_loadable?(format, file_name)
193
- klass, filter = self.create_model_filter(format, file_name, type)
194
- self.load_csv(format, klass, filter, file_name)
213
+ def self.load_file(format, file_name)
214
+ file = nil
215
+ if format[:erb]
216
+ str = File.open(file_name){ |f| f.read }
217
+ file = ERB.new(str).result
218
+ else
219
+ file = File.open(file_name)
220
+ end
195
221
  end
196
222
 
197
- # load YAML data
198
- # @params [Hash] format file load format( table: name, file: name, options...)
199
- def self.yml(format)
200
- type = :yml
201
- file_name, ext = file_exist(format, [type])
202
-
203
- return unless self.file_loadable?(format, file_name)
204
-
205
- klass, filter = self.create_model_filter(format, file_name, type)
206
- self.load_yml(format, klass, filter, file_name)
223
+ def self.load_csv(format, klass, filter, file_name)
224
+ file = self.load_file(format, file_name)
225
+ CSV.open(file) do |csv|
226
+ self.load_csv_row(csv, format, klass, filter, file_name)
227
+ end
228
+ file_name
207
229
  end
208
230
 
209
- def self.load_csv(format, klass, filter, file_name)
231
+ def self.load_csv_row(csv, format, klass, filter, file_name)
210
232
  attributes = klass.columns.map(&:name)
211
- CSV.open(file_name) do |csv|
212
- keys = csv.shift # active record column names
213
- warning("CSV", attributes, keys) unless format[:silent]
233
+ keys = csv.shift # active record column names
234
+
235
+ warning("CSV", attributes, keys) unless format[:silent]
236
+
237
+ ActiveRecord::Base.transaction do
214
238
  csv.each do |values|
215
- h = values.extend(Extensions::Array).to_hash(keys)
216
- filter.call(h)
239
+ h = values.to_hash(keys)
240
+ o = filter.call(h)
241
+ o.save(validation: false)
217
242
  end
218
243
  end
219
- file_name
220
244
  end
221
245
 
222
246
  def self.load_yml(format, klass, filter, file_name)
223
- yaml = YAML.load(File.open(file_name))
247
+ file = self.load_file(format, file_name)
248
+ yaml = YAML.load(file)
249
+
224
250
  return false unless yaml # if file is empty
251
+
225
252
  attributes = klass.columns.map(&:name)
226
- yaml.each do |k,h|
227
- warning("YAML", attributes, h.keys) unless format[:silent]
228
- filter.call(h)
253
+ ActiveRecord::Base.transaction do
254
+ yaml.each do |k,h|
255
+ warning("YAML", attributes, h.keys) unless format[:silent]
256
+
257
+ o = filter.call(h)
258
+ o.save(validation: false)
259
+ end
229
260
  end
230
261
  file_name
231
262
  end
@@ -257,6 +288,7 @@ module Flextures
257
288
  # return ["foo/bar/baz","foo/bar","foo",""]
258
289
  def self.stair_list(dir, stair=true)
259
290
  return [dir.to_s] unless stair
291
+
260
292
  l = []
261
293
  dir.to_s.split("/").reduce([]){ |a,d| a<< d; l.unshift(a.join("/")); a }
262
294
  l<< ""
@@ -272,10 +304,12 @@ module Flextures
272
304
  base_dir_name = Flextures::Configuration.load_directory
273
305
  self.stair_list(format[:dir], format[:stair]).each do |dir|
274
306
  file_path = File.join(base_dir_name, dir, file_name)
275
- return ["#{file_path}.csv", :csv] if type.member?(:csv) and File.exist?("#{file_path}.csv")
276
- return ["#{file_path}.yml", :yml] if type.member?(:yml) and File.exist?("#{file_path}.yml")
307
+ formats = FORMATS.select { |fmt| (type & fmt).present? }
308
+ formats.each do |fmt|
309
+ return ["#{file_path}.#{fmt.join('.')}", *fmt] if File.exist?("#{file_path}.#{fmt.join('.')}")
310
+ end
277
311
  end
278
- [ File.join(base_dir_name, "#{file_name}.csv"), nil ]
312
+ ["#{File.join(base_dir_name, file_name)}.csv", nil]
279
313
  end
280
314
 
281
315
  # file load check
@@ -296,7 +330,6 @@ module Flextures
296
330
  def self.create_model_filter(format, file_name, type)
297
331
  table_name = format[:table].to_s
298
332
  klass = PARENT::create_model(table_name)
299
- # binding.pry
300
333
  # if you use 'rails3_acts_as_paranoid' gem, that is not delete data 'delete_all' method
301
334
  klass.send(klass.respond_to?(:delete_all!) ? :delete_all! : :delete_all)
302
335
 
@@ -304,7 +337,6 @@ module Flextures
304
337
  filter = create_filter(klass, LoadFilter[table_name.to_sym], file_name, type, format)
305
338
  o = klass.new
306
339
  o = filter.call(o, h)
307
- o.save(validate: false)
308
340
  o
309
341
  }
310
342
  [klass, filter]
@@ -146,8 +146,15 @@ module ActiveRecord
146
146
  end
147
147
 
148
148
  def flextures_set_options(options)
149
- @flextures_loader_options = get_or_initialize_flextures_loader_options
150
- @flextures_loader_options = @flextures_loader_options.merge(options)
149
+ get_or_initialize_flextures_loader_options.merge!(options)
150
+ end
151
+
152
+ def flextures_instance
153
+ self
154
+ end
155
+
156
+ def flextures_options
157
+ @flextures_loader_options
151
158
  end
152
159
  end
153
160
  end
@@ -1,3 +1,3 @@
1
1
  module Flextures
2
- VERSION="4.0.1"
2
+ VERSION="4.1.0"
3
3
  end
metadata CHANGED
@@ -1,37 +1,37 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: flextures
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.1
4
+ version: 4.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - baban
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-05-13 00:00:00.000000000 Z
11
+ date: 2016-05-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: bundler
14
+ name: activerecord
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '1.6'
20
- type: :development
19
+ version: '0'
20
+ type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '1.6'
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: rake
28
+ name: activesupport
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
- type: :development
34
+ type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
@@ -39,7 +39,35 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: activesupport
42
+ name: activerecord-import
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: bundler
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '1.6'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '1.6'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rake
43
71
  requirement: !ruby/object:Gem::Requirement
44
72
  requirements:
45
73
  - - ">="
@@ -75,7 +103,6 @@ files:
75
103
  - lib/flextures/flextures_base_config.rb
76
104
  - lib/flextures/flextures_command.rb
77
105
  - lib/flextures/flextures_dumper.rb
78
- - lib/flextures/flextures_extension_modules.rb
79
106
  - lib/flextures/flextures_factory.rb
80
107
  - lib/flextures/flextures_loader.rb
81
108
  - lib/flextures/flextures_railtie.rb
@@ -85,7 +112,6 @@ files:
85
112
  - test/test_helper.rb
86
113
  - test/unit/flextures_args_test.rb
87
114
  - test/unit/flextures_dumper_test.rb
88
- - test/unit/flextures_extention_modules_test.rb
89
115
  - test/unit/flextures_hooks_test.rb
90
116
  - test/unit/flextures_loader_test.rb
91
117
  homepage: http://github.com/baban/flextures
@@ -1,19 +0,0 @@
1
- require 'ostruct'
2
-
3
- module Flextures
4
- module Extensions
5
- module Array
6
- # use Object#extend
7
- # @params [Array] keys hash keys
8
- # @return [Hash] tanslated Hash data
9
- # example:
10
- # hash = array.extend(Extensions::Array).to_hash(keys)
11
- def to_hash(keys)
12
- values = self
13
- values = values[0..keys.size-1] if keys.size < values.size
14
- values = values+[nil]*(keys.size-values.size) if keys.size > values.size
15
- [keys,values].transpose.reduce({}){ |h,pair| k,v=pair; h[k]=v; h }
16
- end
17
- end
18
- end
19
- end
@@ -1,42 +0,0 @@
1
- $:.push( File.join(File.dirname(File.expand_path(__FILE__)), '../') )
2
- require 'test_helper'
3
-
4
- describe :Extention do
5
- describe "Array#to_hash" do
6
- describe "when column size is equal data size" do
7
- before do
8
- @keys = %W[id name hp]
9
- @values = %W[1 hoge 100]
10
- @h = @values.extend(Flextures::Extensions::Array).to_hash(@keys)
11
- end
12
-
13
- it "return hash" do
14
- assert_equal @h, { "id"=>"1", "name"=>"hoge", "hp"=>"100" }
15
- end
16
- end
17
-
18
- describe "when column size is bigger than data size" do
19
- before do
20
- @keys = %W[id name hp]
21
- @values = %W[1 hoge]
22
- @h = @values.extend(Flextures::Extensions::Array).to_hash(@keys)
23
- end
24
-
25
- it "return hash, overflow key is filled 'nil'" do
26
- assert_equal @h, { "id"=>"1", "name"=>"hoge", "hp"=> nil }
27
- end
28
- end
29
-
30
- describe "when column size is smaller than data size" do
31
- before do
32
- @keys = %W[id name]
33
- @values = %W[1 hoge 200]
34
- @h = @values.extend(Flextures::Extensions::Array).to_hash(@keys)
35
- end
36
-
37
- it "return hash, overflow value is cut offed" do
38
- assert_equal @h, { "id"=>"1", "name"=>"hoge" }
39
- end
40
- end
41
- end
42
- end