scaffolding 0.2.3 → 0.2.5

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: ea0e33312192955ef93ef14f8a70b85fbf489854
4
- data.tar.gz: 395291f2f6aa3fb94922d30d414ec3fc0de3a8ce
3
+ metadata.gz: 7db66db198a6e54944b9b8bd4a74949f9d2fa0af
4
+ data.tar.gz: b4624c9d80eecd21f76b3b8f43bf38cb76755dd6
5
5
  SHA512:
6
- metadata.gz: 9d7da6ded6b7b291abd37a4f4cc7ea7d802bd3ec07515006f88d580af72113d01be0e4deb6c58fc483724f03920112c74fac54a5aea83a34cccaf3a3085f517f
7
- data.tar.gz: 55b97414004d457c91f47099f9f5a7dca904ba242c834b01cf11c25bd764ef71428153bc16ec044ddb1e967ab316f97ecad443a1bddc103e2c7fcd58dfc2b19f
6
+ metadata.gz: 921de695c8568b7086924dc5d1fffa782d7782319e57d506efe89dd6dd6106dfd4f62aef4b90df7afe51a137b161da9ab7118dbe3cf5984b27418b99a9080b53
7
+ data.tar.gz: 64b84c22c0fb91242ddd7221fceed21dce0e8d215aba6ef610a62e1d57a36613fbc5b34b76fdc22ea1c96bfa1ab65fafea143122226727a743724ec79f42153a
data/.gitignore CHANGED
File without changes
data/CODE_OF_CONDUCT.md CHANGED
File without changes
data/Gemfile CHANGED
@@ -2,4 +2,3 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in scaffolding.gemspec
4
4
  gemspec
5
- gem 'pry'
data/LICENSE.txt CHANGED
File without changes
data/README.md CHANGED
@@ -20,7 +20,7 @@ Or install it yourself as:
20
20
 
21
21
  ## Usage
22
22
 
23
-
23
+ $ rake g:scaffold
24
24
 
25
25
  ## Development
26
26
 
data/Rakefile CHANGED
@@ -3,42 +3,8 @@ require 'csv'
3
3
 
4
4
  #C:\Users\jdejong\Desktop\Windows.csv
5
5
  #C:\Users\jdejong\Desktop\data.xlsx
6
+ # /Users/Jordandejong/Desktop/ht.csv
6
7
 
7
- task :b do |t|
8
- require 'scaffolding'
9
-
10
- system "clear" or system "cls"
11
- puts "\n***** Scaffolding Gem *****\n\n\n"
12
- puts "\e[32mEnter a relative file name to build the scaffold\e[0m\n"
13
- puts "Example:"
14
- puts '../../../../desktop/mac.csv'
15
- puts 'C:\Users\username\Desktop\Windows.csv'
16
- puts ""
17
- @file = STDIN.gets.chomp
18
-
19
- results = Scaffolding.generate(@file)
20
- if results.kind_of?(Array)
21
- results.each do |error|
22
- puts "\e[31m#{error}\e[0m"
23
- end
24
- puts ""
25
- next
26
- end
27
-
28
- puts "\n\n\n\e[32mWould you like to generate the scaffold now?(y/n)\e[0m"
29
-
30
- if STDIN.gets.chomp == "y"
31
- puts "\n\n\e[32mMigrate the database?(y/n)\e[0m\n"
32
-
33
- if STDIN.gets.chomp == "y"
34
- exec results.to_s + "; rake db:migrate"
35
- else
36
- exec results.to_s
37
- end
38
-
39
- else
40
- puts "\nHeres the code:"
41
- puts results.to_s
42
- end
43
-
44
- end
8
+ #
9
+ # task :b do |t|
10
+ # end
data/lib/scaffolding.rb CHANGED
@@ -6,7 +6,12 @@ module Scaffolding
6
6
  def self.generate(file)
7
7
  Scaffolding::Parser::Csv.process(file)
8
8
  end
9
+
10
+ def self.import_data(file)
11
+ Scaffolding::Parser::Importer::CsvData.process(file)
12
+ end
9
13
  end
10
14
 
11
15
  require 'scaffolding/parser/base'
12
16
  require 'scaffolding/parser/csv'
17
+ require 'scaffolding/parser/importer/csvdata'
@@ -2,12 +2,13 @@ module Scaffolding
2
2
  module Parser
3
3
  class Base
4
4
  require 'rails'
5
+ require 'csv'
5
6
 
6
7
  def initialize(file="")
7
8
  @errors = []
8
9
  @data = valid_data?(file)
9
- @file_name = File.basename(file, ".*" ).to_s.split.join.camelize
10
- @code_string = "rails g scaffold #{@file_name}"
10
+ @file_name = File.basename(file, ".*" ).to_s.split.join.camelize.strip.singularize
11
+ @scaffold_builder = @file_name
11
12
  @scaffolding = {}
12
13
  end
13
14
 
@@ -17,7 +18,8 @@ module Scaffolding
17
18
 
18
19
  def valid_data?(file)
19
20
  unless file == ""
20
- if [".csv", ".xls", ".xlsx"].include? File.extname(file)
21
+ # if [".csv", ".xls", ".xlsx"].include? File.extname(file)
22
+ if File.extname(file) == ".csv"
21
23
  File.read(utf8_encode(file))
22
24
  else
23
25
  @errors << "Unknown file type: #{File.extname(file)}"
@@ -33,14 +35,6 @@ module Scaffolding
33
35
  s.force_encoding(Encoding::ISO_8859_1).encode(Encoding::UTF_8, invalid: :replace, undef: :replace)
34
36
  end
35
37
 
36
- def code_string
37
- process_data
38
- @scaffolding.each do |k, v|
39
- @code_string << " #{k}:#{v}"
40
- end
41
- @code_string
42
- end
43
-
44
38
  def data_types
45
39
  {string: 0, date: 0, integer: 0, boolean: 0, decimal: 0, time: 0, datetime: 0}
46
40
  end
@@ -48,7 +42,7 @@ module Scaffolding
48
42
  def self.process(file)
49
43
  importer = self.new(file)
50
44
  return importer.errors unless importer.errors.count == 0
51
- importer.code_string.to_s
45
+ importer.process_data
52
46
  end
53
47
 
54
48
  end
@@ -22,10 +22,11 @@ module Scaffolding
22
22
  process_row(row.inject({}){|row,(k,v)| row[k.downcase.to_sym] = v; row})
23
23
  rescue => e
24
24
  @errors << "Unable to process row #{@row_number} Error: #{e}\n"
25
- end #rescue block
25
+ end
26
26
  end
27
+ return @errors unless @errors.count == 0
27
28
  scaffold_rank
28
- @errors
29
+ results
29
30
  end
30
31
 
31
32
  def setup_columns(columns)
@@ -48,12 +49,27 @@ module Scaffolding
48
49
  end
49
50
 
50
51
  def scaffold_rank
52
+ puts "\n\e[33mManually choose data types?(y/n)\e[0m"
53
+ @manual = STDIN.gets.chomp
54
+
51
55
  @scaffolding.each do |scaffold, data_types|
52
56
  data_type = data_types.max_by{|k,v| v}[0]
53
- puts "\n\e[32m#{scaffold}\e[0m is a \e[33m#{data_type}\e[0m? (y/string/integer/date ect)"
54
- answer = STDIN.gets.chomp
55
- @scaffolding[scaffold] = (answer == "y" ? data_type : answer)
57
+
58
+ if @manual == "y"
59
+ puts "\n\e[32m#{scaffold}\e[0m is a \e[33m#{data_type}\e[0m? (y/string/integer/date ect)"
60
+ answer = STDIN.gets.chomp
61
+ data_type = answer unless answer == "y"
62
+ end
63
+
64
+ @scaffolding[scaffold] = data_type
65
+ end
66
+ end
67
+
68
+ def results
69
+ @scaffolding.each do |k, v|
70
+ @scaffold_builder << " #{k}:#{v}" unless k.to_s.downcase == "id"
56
71
  end
72
+ @scaffold_builder
57
73
  end
58
74
 
59
75
  end
@@ -0,0 +1,27 @@
1
+ module Scaffolding
2
+ module Parser
3
+ module Importer
4
+ class CsvData < Scaffolding::Parser::Csv
5
+
6
+ def initialize(file="")
7
+ super
8
+ @saved = 0
9
+ @failed = 0
10
+ end
11
+
12
+ def process_row(row)
13
+ model = @file_name.classify.constantize.new(row.except!(:id))
14
+ model.save ? @saved += 1 : @failed += 1
15
+ end
16
+
17
+ def scaffold_rank
18
+ end
19
+
20
+ def results
21
+ {saved: @saved, failed: @failed}
22
+ end
23
+
24
+ end
25
+ end
26
+ end
27
+ end
@@ -3,10 +3,11 @@ require 'rails'
3
3
 
4
4
  module Scaffolding
5
5
  class Generators < Rails::Railtie
6
+ railtie_name :builders
6
7
 
7
8
  rake_tasks do
8
- load "../scaffolding/lib/scaffolding/tasks/generators.rake"
9
+ # load "../scaffolding/lib/scaffolding/tasks/generators.rake"
10
+ load "tasks/generators.rake"
9
11
  end
10
-
11
12
  end
12
13
  end
@@ -1,3 +1,3 @@
1
1
  module Scaffolding
2
- VERSION = "0.2.3"
2
+ VERSION = "0.2.5"
3
3
  end
@@ -0,0 +1,78 @@
1
+ namespace :g do
2
+ desc 'generate a scaffold from a csv file'
3
+ task :scaffold do |t|
4
+ # require 'rails/generators'
5
+ require 'scaffolding'
6
+
7
+ system "clear" or system "cls"
8
+ puts "\n***** Scaffolding Gem *****\n\n\n"
9
+ puts "\e[32mEnter a relative file name to build the scaffold\e[0m\n"
10
+ puts "You are currently here: #{Dir.pwd}\n\n"
11
+ file = STDIN.gets.chomp
12
+
13
+ results = Scaffolding.generate(file)
14
+ if results.kind_of?(Array)
15
+ results.each do |error|
16
+ puts "\e[31m#{error}\e[0m"
17
+ end
18
+ puts ""
19
+ next
20
+ end
21
+
22
+ puts "\n\e[32mWould you like to generate the scaffold now?(y/n)\e[0m"
23
+ if STDIN.gets.chomp == "y"
24
+ executions = ""
25
+
26
+ puts "\n\e[32mMigrate the database?(y/n)\e[0m\n"
27
+ if STDIN.gets.chomp == "y"
28
+ executions << "; rake db:migrate"
29
+
30
+ puts "\n\e[32mImport the data from #{file}?(y/n)\e[0m\n"
31
+ if STDIN.gets.chomp == "y"
32
+ executions << "; rake import:csv:data[#{file}]"
33
+ end
34
+ end
35
+ exec "rails g scaffold " + results.to_s + executions
36
+ else
37
+
38
+ # puts "\n\n\n\e[32mWould you like to generate the scaffold now?(y/n)\e[0m"
39
+ # if STDIN.gets.chomp == "y"
40
+ # Rails::Generators.invoke("active_record:model", results)
41
+ #
42
+ # puts "\n\n\e[32mMigrate the database?(y/n)\e[0m\n"
43
+ # if STDIN.gets.chomp == "y"
44
+ # Rake::Task["db:migrate"].invoke
45
+ #
46
+ # puts "\n\n\e[32mImport the data from #{file}?(y/n)\e[0m\n"
47
+ # if STDIN.gets.chomp == "y"
48
+ # Scaffolding.import_data(file)
49
+ #
50
+ # end
51
+ # end
52
+ # else
53
+
54
+ puts "Heres the code:"
55
+ puts "rails g scaffold" + results.to_s
56
+ end
57
+ end
58
+ end
59
+
60
+ namespace :import do
61
+ namespace :csv do
62
+ desc 'Import data from CSV file'
63
+ task :data, [:file] => :environment do |t, args|
64
+ results = Scaffolding.import_data(args[:file])
65
+ if results.kind_of?(Array)
66
+ results.each do |error|
67
+ puts "\e[31m#{error}\e[0m"
68
+ end
69
+ puts ""
70
+ next
71
+ else
72
+ results.each do |k,v|
73
+ puts "#{v} records #{k}"
74
+ end
75
+ end
76
+ end
77
+ end
78
+ end
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.3
4
+ version: 0.2.5
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-01 00:00:00.000000000 Z
11
+ date: 2015-10-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -56,10 +56,10 @@ files:
56
56
  - lib/scaffolding.rb
57
57
  - lib/scaffolding/parser/base.rb
58
58
  - lib/scaffolding/parser/csv.rb
59
- - lib/scaffolding/parser/importer/excel.rb
59
+ - lib/scaffolding/parser/importer/csvdata.rb
60
60
  - lib/scaffolding/railtie.rb
61
- - lib/scaffolding/tasks/generators.rake
62
61
  - lib/scaffolding/version.rb
62
+ - lib/tasks/generators.rake
63
63
  - scaffolding.gemspec
64
64
  homepage: https://github.com/Jordan-deJong/scaffolding
65
65
  licenses:
@@ -81,8 +81,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
81
81
  version: '0'
82
82
  requirements: []
83
83
  rubyforge_project:
84
- rubygems_version: 2.4.7
84
+ rubygems_version: 2.4.5
85
85
  signing_key:
86
86
  specification_version: 4
87
87
  summary: Generate a rails scaffold based on a CSV file.
88
88
  test_files: []
89
+ has_rdoc:
@@ -1,18 +0,0 @@
1
- module Scaffolding
2
- module Parser
3
- module Importer
4
- class ExcelData < Scaffolding::Parser::Excel
5
-
6
- def process_row(row)
7
- row.each do |column, data|
8
- data_type = :string
9
- data_type = :date if Date.parse(data) rescue data_type
10
- data_type = :integer if Integer(data) rescue data_type
11
- @scaffolding[column.to_sym][data_type] += 1
12
- end
13
- end
14
-
15
- end
16
- end
17
- end
18
- end
@@ -1,40 +0,0 @@
1
- namespace :g do
2
- desc 'generate a scaffold from file'
3
- task :scaffold do |t|
4
- require 'scaffolding'
5
-
6
- system "clear" or system "cls"
7
- puts "\n***** Scaffolding Gem *****\n\n\n"
8
- puts "\e[32mEnter a relative file name to build the scaffold\e[0m\n"
9
- puts "Example:"
10
- puts '../../../../desktop/mac.csv'
11
- puts 'C:\Users\username\Desktop\Windows.csv'
12
- puts ""
13
- @file = STDIN.gets.chomp
14
-
15
- results = Scaffolding.generate(@file)
16
- if results.kind_of?(Array)
17
- results.each do |error|
18
- puts "\e[31m#{error}\e[0m"
19
- end
20
- puts ""
21
- next
22
- end
23
-
24
- puts "\n\n\n\e[32mWould you like to generate the scaffold now?(y/n)\e[0m"
25
-
26
- if STDIN.gets.chomp == "y"
27
- puts "\n\n\e[32mMigrate the database?(y/n)\e[0m\n"
28
-
29
- if STDIN.gets.chomp == "y"
30
- exec results.to_s + "; rake db:migrate"
31
- else
32
- exec results.to_s
33
- end
34
-
35
- else
36
- puts "\nHeres the code:"
37
- puts results.to_s
38
- end
39
-
40
- end