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 +4 -4
- data/README.md +1 -1
- data/Rakefile +33 -5
- data/lib/scaffolding.rb +4 -12
- data/lib/scaffolding/{importer → parser}/base.rb +8 -15
- data/lib/scaffolding/{importer/excel.rb → parser/csv.rb} +18 -6
- data/lib/scaffolding/parser/importer/excel.rb +18 -0
- data/lib/scaffolding/tasks/generators.rake +39 -14
- data/lib/scaffolding/version.rb +1 -1
- metadata +5 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ea0e33312192955ef93ef14f8a70b85fbf489854
|
4
|
+
data.tar.gz: 395291f2f6aa3fb94922d30d414ec3fc0de3a8ce
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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/
|
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
|
-
|
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/
|
11
|
-
puts 'C:\Users\
|
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
|
data/lib/scaffolding.rb
CHANGED
@@ -3,18 +3,10 @@ require "scaffolding/version"
|
|
3
3
|
module Scaffolding
|
4
4
|
require 'scaffolding/railtie' if defined?(Rails)
|
5
5
|
|
6
|
-
def self.
|
7
|
-
|
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/
|
20
|
-
require 'scaffolding/
|
11
|
+
require 'scaffolding/parser/base'
|
12
|
+
require 'scaffolding/parser/csv'
|
@@ -1,11 +1,12 @@
|
|
1
1
|
module Scaffolding
|
2
|
-
module
|
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.
|
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
|
51
|
+
importer.code_string.to_s
|
59
52
|
end
|
60
53
|
|
61
54
|
end
|
@@ -1,16 +1,21 @@
|
|
1
1
|
module Scaffolding
|
2
|
-
module
|
3
|
-
class
|
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:
|
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] =
|
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
|
-
|
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
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
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
|
data/lib/scaffolding/version.rb
CHANGED
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.
|
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-
|
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/
|
58
|
-
- lib/scaffolding/
|
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
|