scaffolding 0.2.7 → 0.2.8

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: f5ce20351a558fc76a04a4004abe7ea395a73895
4
- data.tar.gz: bf50688193b8c54d0ffe2628952f23147b6a7973
3
+ metadata.gz: b27e170528a4592ad0fd5b5c6d5f824523b9db2f
4
+ data.tar.gz: a61ae31c98a294fcfcdc0b32785ba119bbda8cc4
5
5
  SHA512:
6
- metadata.gz: 4cb6567c6668c59e8ed64e2a1e1767d76a76d24eba13f2044c6ce539f82f01e78f506136b57a65200bc0484710a1f28aad0bf63c716386923253549c187db4a6
7
- data.tar.gz: c3602deae91862cc32ea65b82260bd7946034c025ca92d935b84f1142e3a21bb0f6fa3969cb64c9c22d1000a8a00258c742e72d50fbd3ab1296def3f8cf5f35d
6
+ metadata.gz: 6ee1e534fa8cd2ed3cfb8ed0b7b23718ee0d285d36c32596a0c631f3aab19ac7f084516b7ab5c59773eadd83154d49b8a798b7265799d5a263c50ec8398a493a
7
+ data.tar.gz: 353276fe879483d99b92e636b8011fdc43db98d23feb563daf90d045081c2dea88e52f0cf375a050b8f4f7d978ecf4c0b5e683d6da7d39d91831a0daf601902e
data/.gitignore CHANGED
File without changes
data/CODE_OF_CONDUCT.md CHANGED
File without changes
data/Gemfile CHANGED
File without changes
data/LICENSE.txt CHANGED
File without changes
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Scaffolding
2
2
 
3
- Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/scaffolding`. To experiment with that code, run `bin/console` for an interactive prompt.
3
+ Generate a rails scaffold from a CSV and import the data into your rails application.
4
4
 
5
5
  ## Installation
6
6
 
@@ -20,7 +20,11 @@ Or install it yourself as:
20
20
 
21
21
  ## Usage
22
22
 
23
- $ rails generate/g scaffolding path/to/file.csv
23
+ $ rails g/generate scaffolding path/to/file.csv
24
+
25
+ Or add CSV files to the tmp/scaffolding directory and process them all with:
26
+
27
+ $ rails g/generate scaffolding
24
28
 
25
29
  ## Development
26
30
 
data/Rakefile CHANGED
@@ -1,5 +1,5 @@
1
1
  require "bundler/gem_tasks"
2
2
 
3
- #C:\Users\jdejong\Desktop\Windows.csv
3
+ #C:\\Users\\jdejong\\Desktop\\Windows.csv
4
4
  #C:\Users\jdejong\Desktop\data.xlsx
5
5
  # /Users/Jordandejong/Desktop/ht.csv
@@ -6,28 +6,13 @@ require 'scaffolding'
6
6
  class ScaffoldingGenerator < Rails::Generators::Base
7
7
  argument :file, :type => :string, :default => ""
8
8
 
9
- def generate_scaffold
10
- results = Scaffolding.generate(file)
11
-
12
- if results.kind_of?(Array)
13
- results.each do |error|
14
- puts "\e[31m#{error}\e[0m"
15
- end
16
- return
17
- end
18
-
19
- Rails::Generators::Base.new.generate "scaffold", results
20
-
21
- puts "\n\n\e[32mMigrate the database?(y/n)\e[0m\n"
22
- if STDIN.gets.chomp == "y"
23
- Rake::Task["db:migrate"].invoke
24
-
25
- puts "\n\n\e[32mImport the data from #{file}?(y/n)\e[0m\n"
26
- if STDIN.gets.chomp == "y"
27
- Scaffolding.import_data(file).each do |k,v|
28
- puts "#{v} records #{k}"
29
- end
9
+ def analyize_files
10
+ if file == "" || file.nil?
11
+ Dir[Rails.root.join('tmp/scaffolding/*')].each do |file|
12
+ Scaffolding.generate(file)
30
13
  end
14
+ else
15
+ Scaffolding.generate(file)
31
16
  end
32
17
  end
33
18
 
data/lib/scaffolding.rb CHANGED
@@ -1,15 +1,46 @@
1
1
  require "scaffolding/version"
2
2
 
3
3
  module Scaffolding
4
- require 'scaffolding/railtie' if defined?(Rails)
4
+ if defined?(Rails)
5
+ require 'scaffolding/railtie'
6
+ Dir.mkdir(Rails.root.join('tmp/scaffolding/*'))
7
+ end
5
8
 
6
9
  def self.generate(file)
7
- Scaffolding::Parser::Csv.process(file)
10
+ @file = file
11
+ results = Scaffolding::Parser::Csv.process(@file)
12
+ return if Scaffolding.errors(results)
13
+ Rails::Generators::Base.new.generate "scaffold", results
14
+ Scaffolding.import_data if Scaffolding.migrate_database
15
+ end
16
+
17
+ def self.errors(results)
18
+ if results.kind_of?(Array)
19
+ results.each do |error|
20
+ puts "\e[31m#{error}\e[0m"
21
+ end
22
+ true
23
+ end
8
24
  end
9
25
 
10
- def self.import_data(file)
11
- Scaffolding::Parser::Importer::CsvData.process(file)
26
+ def self.migrate_database
27
+ puts "\n\n\e[32mMigrate the database?(y/n)\e[0m\n"
28
+ if STDIN.gets.chomp == "y"
29
+ Rake::Task["db:migrate"].invoke
30
+ else
31
+ false
32
+ end
12
33
  end
34
+
35
+ def self.import_data
36
+ puts "\n\n\e[32mImport the data from #{@file}?(y/n)\e[0m\n"
37
+ if STDIN.gets.chomp == "y"
38
+ Scaffolding::Parser::Importer::CsvData.process(@file).each do |k,v|
39
+ puts "#{v} records #{k}"
40
+ end
41
+ end
42
+ end
43
+
13
44
  end
14
45
 
15
46
  require 'scaffolding/parser/base'
@@ -17,12 +17,12 @@ module Scaffolding
17
17
  end
18
18
 
19
19
  def valid_data?(file)
20
- unless file == ""
20
+ unless file == "" || file.nil?
21
21
  # if [".csv", ".xls", ".xlsx"].include? File.extname(file)
22
22
  if File.extname(file) == ".csv"
23
23
  File.read(utf8_encode(file))
24
24
  else
25
- @errors << "Unknown file type: #{File.extname(file)}"
25
+ @errors << "Unknown file type #{File.extname(file)} for #{file}"
26
26
  false
27
27
  end
28
28
  else
@@ -45,10 +45,23 @@ module Scaffolding
45
45
  seperators.max_by{|k,v| v}[0]
46
46
  end
47
47
 
48
+ def process_row(row)
49
+ row.each do |column, data|
50
+ data_type = :string
51
+ data_type = :boolean if ["true", "false"].include?(data.to_s.downcase) rescue data_type
52
+ data_type = :date if Date.parse(Date.strptime(data, '%m/%d/%Y')) rescue data_type
53
+ data_type = :time if Time.parse(Time.strptime(data, '%H:%M:%S')) rescue data_type
54
+ data_type = :datetime if DateTime.parse(DateTime.strptime(data, '%m/%d/%Y %H:%M:%S')) rescue data_type
55
+ data_type = :integer if Integer(data) rescue data_type
56
+ data_type = :decimal if ((data.to_f - data.to_i).abs > 0.0) rescue data_type
57
+ @scaffolding[column.to_sym][data_type] += 1 unless data == ""
58
+ end
59
+ end
60
+
48
61
  def self.process(file)
49
62
  importer = self.new(file)
50
63
  return importer.errors unless importer.errors.count == 0
51
- importer.process_data
64
+ importer.results
52
65
  end
53
66
 
54
67
  end
@@ -8,9 +8,14 @@ module Scaffolding
8
8
  @row_number = 0
9
9
  end
10
10
 
11
- def process_data(data = @data)
12
- CSV.parse(data, headers: @headers, col_sep: col_seperator, skip_blanks: true) do |row|
13
- setup_columns(row.to_h.keys) if @row_number == 0
11
+ def setup_columns
12
+ CSV.parse(@data, headers: @headers, col_sep: col_seperator, skip_blanks: true).first.each do |column|
13
+ @scaffolding[column[0].downcase.to_sym] = data_types
14
+ end
15
+ end
16
+
17
+ def process_data
18
+ CSV.parse(@data, headers: @headers, col_sep: col_seperator, skip_blanks: true) do |row|
14
19
  @row_number += 1
15
20
  begin
16
21
  process_row(row.inject({}){|row,(k,v)| row[k.downcase.to_sym] = v; row})
@@ -18,28 +23,6 @@ module Scaffolding
18
23
  @errors << "Unable to process row #{@row_number} Error: #{e}\n"
19
24
  end
20
25
  end
21
- return @errors unless @errors.count == 0
22
- scaffold_rank
23
- results
24
- end
25
-
26
- def setup_columns(columns)
27
- columns.each do |column|
28
- @scaffolding[column.downcase.to_sym] = data_types
29
- end
30
- end
31
-
32
- def process_row(row)
33
- row.each do |column, data|
34
- data_type = :string
35
- data_type = :boolean if ["true", "false"].include?(data.to_s.downcase) rescue data_type
36
- data_type = :date if Date.parse(data) rescue data_type
37
- data_type = :time if Time.parse(data) rescue data_type
38
- data_type = :datetime if DateTime.parse(data) rescue data_type
39
- data_type = :integer if Integer(data) rescue data_type
40
- data_type = :decimal if ((data.to_f - data.to_i).abs > 0.0) rescue data_type
41
- @scaffolding[column.to_sym][data_type] += 1
42
- end
43
26
  end
44
27
 
45
28
  def scaffold_rank
@@ -50,13 +33,17 @@ module Scaffolding
50
33
  if @manual == "y"
51
34
  puts "\n\e[32m#{scaffold}\e[0m is a \e[33m#{data_type}\e[0m? (y/string/integer/date ect)"
52
35
  answer = STDIN.gets.chomp
53
- data_type = answer unless answer == "y"
36
+ data_type = answer unless answer == "y" || answer == ""
54
37
  end
55
38
  @scaffolding[scaffold] = data_type
56
39
  end
57
40
  end
58
41
 
59
42
  def results
43
+ setup_columns
44
+ process_data
45
+ return @errors unless @errors.count == 0
46
+ scaffold_rank
60
47
  @scaffolding.each do |k, v|
61
48
  @scaffold_builder << " #{k}:#{v}" unless k.to_s.downcase == "id"
62
49
  end
@@ -14,10 +14,9 @@ module Scaffolding
14
14
  model.save ? @saved += 1 : @failed += 1
15
15
  end
16
16
 
17
- def scaffold_rank
18
- end
19
-
20
17
  def results
18
+ process_data
19
+ return @errors unless @errors.count == 0
21
20
  {saved: @saved, failed: @failed}
22
21
  end
23
22
 
File without changes
@@ -1,3 +1,3 @@
1
1
  module Scaffolding
2
- VERSION = "0.2.7"
2
+ VERSION = "0.2.8"
3
3
  end
File without changes
data/scaffolding.gemspec CHANGED
File without changes
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: scaffolding
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.7
4
+ version: 0.2.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jordan-deJong
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-10-03 00:00:00.000000000 Z
11
+ date: 2015-10-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -82,9 +82,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
82
82
  version: '0'
83
83
  requirements: []
84
84
  rubyforge_project:
85
- rubygems_version: 2.4.5
85
+ rubygems_version: 2.4.7
86
86
  signing_key:
87
87
  specification_version: 4
88
88
  summary: Generate a rails scaffold based on a CSV file.
89
89
  test_files: []
90
- has_rdoc: