scaffolding 0.2.0 → 0.2.3

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: 17b87f1c11a168517dd90f66edf6c57fcb93d4ce
4
- data.tar.gz: 51619f5ac2e9e8bd618225a7712917e113a4bfec
3
+ metadata.gz: ea0e33312192955ef93ef14f8a70b85fbf489854
4
+ data.tar.gz: 395291f2f6aa3fb94922d30d414ec3fc0de3a8ce
5
5
  SHA512:
6
- metadata.gz: 20cc2b5ae69b746313a3de5de60ff09ba32391efad98043e36bb9f53f53ba9fbd0e75387c0fe79c5fecf1a416ea6bd681f983fdb9d2e4b7086612dedd3f541af
7
- data.tar.gz: 625be29badfb58c49752cfc87b67b15456fe81bafd0aa2817f3716f9e448bd00e857c179556b81199b085f7bacfe65dbc7e66eea065a422c0e99aa0dc5de0c8b
6
+ metadata.gz: 9d7da6ded6b7b291abd37a4f4cc7ea7d802bd3ec07515006f88d580af72113d01be0e4deb6c58fc483724f03920112c74fac54a5aea83a34cccaf3a3085f517f
7
+ data.tar.gz: 55b97414004d457c91f47099f9f5a7dca904ba242c834b01cf11c25bd764ef71428153bc16ec044ddb1e967ab316f97ecad443a1bddc103e2c7fcd58dfc2b19f
data/README.md CHANGED
@@ -30,7 +30,7 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
30
30
 
31
31
  ## Contributing
32
32
 
33
- Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/scaffolding. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](contributor-covenant.org) code of conduct.
33
+ Bug reports and pull requests are welcome on GitHub at https://github.com/Jordan-deJong/scaffolding. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](contributor-covenant.org) code of conduct.
34
34
 
35
35
 
36
36
  ## License
data/Rakefile CHANGED
@@ -1,16 +1,44 @@
1
1
  require "bundler/gem_tasks"
2
+ require 'csv'
2
3
 
3
- task :gscaffold do |t|
4
+ #C:\Users\jdejong\Desktop\Windows.csv
5
+ #C:\Users\jdejong\Desktop\data.xlsx
6
+
7
+ task :b do |t|
4
8
  require 'scaffolding'
5
9
 
6
10
  system "clear" or system "cls"
7
11
  puts "\n***** Scaffolding Gem *****\n\n\n"
8
12
  puts "\e[32mEnter a relative file name to build the scaffold\e[0m\n"
9
13
  puts "Example:"
10
- puts '../../../../desktop/ht.csv'
11
- puts 'C:\Users\jdejong\Desktop\Windows.csv'
14
+ puts '../../../../desktop/mac.csv'
15
+ puts 'C:\Users\username\Desktop\Windows.csv'
12
16
  puts ""
13
- file = STDIN.gets.chomp
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
14
43
 
15
- Scaffolding.build(file)
16
44
  end
@@ -3,18 +3,10 @@ require "scaffolding/version"
3
3
  module Scaffolding
4
4
  require 'scaffolding/railtie' if defined?(Rails)
5
5
 
6
- def self.build(file)
7
- results = Scaffolding::Importer::Excel.process(file)
8
- if results.kind_of?(Array)
9
- results.each do |error|
10
- puts "\e[31m#{error}\e[0m"
11
- end
12
- puts ""
13
- else
14
- exec results.to_s
15
- end
6
+ def self.generate(file)
7
+ Scaffolding::Parser::Csv.process(file)
16
8
  end
17
9
  end
18
10
 
19
- require 'scaffolding/importer/base'
20
- require 'scaffolding/importer/excel'
11
+ require 'scaffolding/parser/base'
12
+ require 'scaffolding/parser/csv'
@@ -1,11 +1,12 @@
1
1
  module Scaffolding
2
- module Importer
2
+ module Parser
3
3
  class Base
4
+ require 'rails'
4
5
 
5
6
  def initialize(file="")
6
7
  @errors = []
7
8
  @data = valid_data?(file)
8
- @file_name = File.basename(file, ".*" ).to_s.split.join.downcase
9
+ @file_name = File.basename(file, ".*" ).to_s.split.join.camelize
9
10
  @code_string = "rails g scaffold #{@file_name}"
10
11
  @scaffolding = {}
11
12
  end
@@ -32,18 +33,6 @@ module Scaffolding
32
33
  s.force_encoding(Encoding::ISO_8859_1).encode(Encoding::UTF_8, invalid: :replace, undef: :replace)
33
34
  end
34
35
 
35
- # def camelize(term, uppercase_first_letter = true)
36
- # string = term.to_s
37
- # if uppercase_first_letter
38
- # string = string.sub(/^[a-z\d]*/) { inflections.acronyms[$&] || $&.capitalize }
39
- # else
40
- # string = string.sub(/^(?:#{inflections.acronym_regex}(?=\b|[A-Z_])|\w)/) { $&.downcase }
41
- # end
42
- # string.gsub!(/(?:_|(\/))([a-z\d]*)/) { "#{$1}#{inflections.acronyms[$2] || $2.capitalize}" }
43
- # string.gsub!(/\//, '::')
44
- # string
45
- # end
46
-
47
36
  def code_string
48
37
  process_data
49
38
  @scaffolding.each do |k, v|
@@ -52,10 +41,14 @@ module Scaffolding
52
41
  @code_string
53
42
  end
54
43
 
44
+ def data_types
45
+ {string: 0, date: 0, integer: 0, boolean: 0, decimal: 0, time: 0, datetime: 0}
46
+ end
47
+
55
48
  def self.process(file)
56
49
  importer = self.new(file)
57
50
  return importer.errors unless importer.errors.count == 0
58
- importer.code_string.to_s + "; rake db:migrate"
51
+ importer.code_string.to_s
59
52
  end
60
53
 
61
54
  end
@@ -1,16 +1,21 @@
1
1
  module Scaffolding
2
- module Importer
3
- class Excel < Scaffolding::Importer::Base
2
+ module Parser
3
+ class Csv < Scaffolding::Parser::Base
4
4
 
5
5
  def initialize(file = "")
6
6
  super
7
7
  @headers = true
8
- @col_seperator = ","
9
8
  @row_number = 0
10
9
  end
11
10
 
11
+ def col_seperator
12
+ seperators = {}
13
+ [",","\t"].each {|seperator| seperators[seperator] = @data.count(seperator)}
14
+ seperators.max_by{|k,v| v}[0]
15
+ end
16
+
12
17
  def process_data(data = @data)
13
- CSV.parse(data, headers: @headers, col_sep: @col_seperator, skip_blanks: true) do |row|
18
+ CSV.parse(data, headers: @headers, col_sep: col_seperator, skip_blanks: true) do |row|
14
19
  setup_columns(row.to_h.keys) if @row_number == 0
15
20
  @row_number += 1
16
21
  begin
@@ -25,22 +30,29 @@ module Scaffolding
25
30
 
26
31
  def setup_columns(columns)
27
32
  columns.each do |column|
28
- @scaffolding[column.downcase.to_sym] = {string: 0, date: 0, integer: 0}
33
+ @scaffolding[column.downcase.to_sym] = data_types
29
34
  end
30
35
  end
31
36
 
32
37
  def process_row(row)
33
38
  row.each do |column, data|
34
39
  data_type = :string
40
+ data_type = :boolean if ["true", "false"].include?(data.to_s.downcase) rescue data_type
35
41
  data_type = :date if Date.parse(data) rescue data_type
42
+ data_type = :time if Time.parse(data) rescue data_type
43
+ data_type = :datetime if DateTime.parse(data) rescue data_type
36
44
  data_type = :integer if Integer(data) rescue data_type
45
+ data_type = :decimal if ((data.to_f - data.to_i).abs > 0.0) rescue data_type
37
46
  @scaffolding[column.to_sym][data_type] += 1
38
47
  end
39
48
  end
40
49
 
41
50
  def scaffold_rank
42
51
  @scaffolding.each do |scaffold, data_types|
43
- @scaffolding[scaffold] = data_types.max_by{|k,v| v}[0]
52
+ 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)
44
56
  end
45
57
  end
46
58
 
@@ -0,0 +1,18 @@
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,15 +1,40 @@
1
- desc 'generate a scaffold from file'
2
- task :gscaffold do |t|
3
- require 'scaffolding'
4
-
5
- system "clear" or system "cls"
6
- puts "\n***** Scaffolding Gem *****\n\n\n"
7
- puts "\e[32mEnter a relative file name to build the scaffold\e[0m\n"
8
- puts "Example:"
9
- puts '../../../../desktop/ht.csv'
10
- puts 'C:\Users\username\Desktop\Windows.csv'
11
- puts ""
12
- file = STDIN.gets.chomp
13
-
14
- Scaffolding.build(file)
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
+
15
40
  end
@@ -1,3 +1,3 @@
1
1
  module Scaffolding
2
- VERSION = "0.2.0"
2
+ VERSION = "0.2.3"
3
3
  end
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.0
4
+ version: 0.2.3
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-09-30 00:00:00.000000000 Z
11
+ date: 2015-10-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -54,8 +54,9 @@ files:
54
54
  - bin/console
55
55
  - bin/setup
56
56
  - lib/scaffolding.rb
57
- - lib/scaffolding/importer/base.rb
58
- - lib/scaffolding/importer/excel.rb
57
+ - lib/scaffolding/parser/base.rb
58
+ - lib/scaffolding/parser/csv.rb
59
+ - lib/scaffolding/parser/importer/excel.rb
59
60
  - lib/scaffolding/railtie.rb
60
61
  - lib/scaffolding/tasks/generators.rake
61
62
  - lib/scaffolding/version.rb