flextures 4.0.1 → 4.1.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.
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