tdd_scaffold 0.0.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 +7 -0
- data/.rspec +1 -0
- data/bin/scaffold +3 -0
- data/lib/helper_utils.rb +36 -0
- data/lib/tdd_scaffold.rb +145 -0
- data/spec/spec_helper.rb +2 -0
- data/spec/tdd_scaffold_spec.rb +1 -0
- metadata +50 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 5c43dac66596dc98b82d32518ea9d9f55ceb0880
|
4
|
+
data.tar.gz: 7f1d31867754b822608f86ef919c6ecc9f7fba97
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: acc16b8d19e82613ac0b4f5203421259c39861b953f860d74303de4a7f1fc9118c9c178c23bb907a8706930331cdb0472afd3afa9cc7b38b7ddc0cb1418134ef
|
7
|
+
data.tar.gz: a29354dfad8a9329b20a7d0a5f8595141db9dcde85b6ba1c1b017f8a31ba4cb0e671499f4740a61ef1ebd73f0f588dc6c87e14f8e65779bc003505ef28733423
|
data/.rspec
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--color
|
data/bin/scaffold
ADDED
data/lib/helper_utils.rb
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
class String
|
2
|
+
def snakecase
|
3
|
+
self.gsub(/::/, '/'). # Convert namespace to slash
|
4
|
+
gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
|
5
|
+
gsub(/([a-z\d])([A-Z])/,'\1_\2').
|
6
|
+
tr('-', '_').
|
7
|
+
gsub(/\s/, '_').
|
8
|
+
gsub(/__+/, '_').
|
9
|
+
downcase
|
10
|
+
end
|
11
|
+
|
12
|
+
def camelcase
|
13
|
+
return self if self !~ /_/ && self =~ /[A-Z]+.*/
|
14
|
+
self.split('_').map(&:capitalize).join
|
15
|
+
end
|
16
|
+
|
17
|
+
def lower_camelcase
|
18
|
+
self[0].chr.downcase + self.camelcase[1..-1]
|
19
|
+
end
|
20
|
+
|
21
|
+
def classify
|
22
|
+
self.split('/').collect do |c|
|
23
|
+
c.camelcase
|
24
|
+
end.join('::')
|
25
|
+
end
|
26
|
+
|
27
|
+
def tableify
|
28
|
+
self.snakecase + 's'
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
class Object
|
33
|
+
def in container
|
34
|
+
container.include? self
|
35
|
+
end
|
36
|
+
end
|
data/lib/tdd_scaffold.rb
ADDED
@@ -0,0 +1,145 @@
|
|
1
|
+
#!/usr/bin/ruby
|
2
|
+
|
3
|
+
require 'fileutils'
|
4
|
+
require_relative 'helper_utils'
|
5
|
+
|
6
|
+
PASCAL_REGEX_STRING = /\b[A-Z]+[a-zA-Z]*\b/
|
7
|
+
|
8
|
+
usage = <<-EOF
|
9
|
+
Please provide command and options
|
10
|
+
|
11
|
+
Usage:
|
12
|
+
scaffold Class <option>
|
13
|
+
scaffold Module <option>
|
14
|
+
scaffold MVC <option>
|
15
|
+
scaffold runner
|
16
|
+
|
17
|
+
options:
|
18
|
+
PascalCaseWord
|
19
|
+
EOF
|
20
|
+
|
21
|
+
# Parse ARGV
|
22
|
+
file_type = ARGV[0]
|
23
|
+
file_names = ARGV[1..-1].to_a
|
24
|
+
|
25
|
+
if (file_type.in ["Class", "Module", "MVC"]) && (file_names.any?)
|
26
|
+
# Confirm all arguments are in PascalCasing
|
27
|
+
if file_names.grep(PASCAL_REGEX_STRING) == file_names
|
28
|
+
# Create 'spec' directory, if not exists
|
29
|
+
FileUtils.mkdir_p 'spec'
|
30
|
+
|
31
|
+
file_names.each do |file_name|
|
32
|
+
# Convert file name to snake_casing
|
33
|
+
snake_case = file_name.snakecase
|
34
|
+
|
35
|
+
case file_type
|
36
|
+
when "Class"
|
37
|
+
# Create Class
|
38
|
+
file_snippet = <<-EOF
|
39
|
+
class #{file_name}
|
40
|
+
end
|
41
|
+
EOF
|
42
|
+
File.open("#{snake_case}.rb", "a+") do |file|
|
43
|
+
file.write(file_snippet)
|
44
|
+
end
|
45
|
+
|
46
|
+
# Create Class RSpec tests
|
47
|
+
class_rspec_snippet = <<-EOF
|
48
|
+
require_relative '../#{snake_case}'
|
49
|
+
|
50
|
+
describe '#{file_name}' do
|
51
|
+
end
|
52
|
+
EOF
|
53
|
+
File.open("spec/#{snake_case}_spec.rb", "a+") do |file|
|
54
|
+
file.write(class_rspec_snippet)
|
55
|
+
end
|
56
|
+
when "Module"
|
57
|
+
# Create Module
|
58
|
+
file_snippet = <<-EOF
|
59
|
+
module #{file_name}
|
60
|
+
end
|
61
|
+
EOF
|
62
|
+
File.open("#{snake_case}.rb", "a+") do |file|
|
63
|
+
file.write(file_snippet)
|
64
|
+
end
|
65
|
+
|
66
|
+
# Create Module RSpec tests
|
67
|
+
module_rspec_snippet = <<-EOF
|
68
|
+
require_relative '../#{snake_case}'
|
69
|
+
|
70
|
+
describe '#{file_name}' do
|
71
|
+
end
|
72
|
+
EOF
|
73
|
+
File.open("spec/#{snake_case}_spec.rb", "a+") do |file|
|
74
|
+
file.write(module_rspec_snippet)
|
75
|
+
end
|
76
|
+
when "MVC"
|
77
|
+
# Create Model
|
78
|
+
model_snippet = <<-EOF
|
79
|
+
class #{file_name}
|
80
|
+
end
|
81
|
+
EOF
|
82
|
+
File.open("#{snake_case}.rb", "a+") do |file|
|
83
|
+
file.write(model_snippet)
|
84
|
+
end
|
85
|
+
# Create Model RSpec tests
|
86
|
+
model_rspec_snippet = <<-EOF
|
87
|
+
require_relative '../#{snake_case}'
|
88
|
+
|
89
|
+
describe '#{file_name} Model' do
|
90
|
+
end
|
91
|
+
EOF
|
92
|
+
File.open("spec/#{snake_case}_spec.rb", "a+") do |file|
|
93
|
+
file.write(model_rspec_snippet)
|
94
|
+
end
|
95
|
+
# Create View
|
96
|
+
view_snippet = <<-EOF
|
97
|
+
module #{file_name}View
|
98
|
+
end
|
99
|
+
EOF
|
100
|
+
File.open("#{snake_case}_view.rb", "a+") do |file|
|
101
|
+
file.write(view_snippet)
|
102
|
+
end
|
103
|
+
# Create View RSpec tests
|
104
|
+
view_rspec_snippet = <<-EOF
|
105
|
+
require_relative '../#{snake_case}_view'
|
106
|
+
|
107
|
+
describe '#{file_name} View' do
|
108
|
+
end
|
109
|
+
EOF
|
110
|
+
File.open("spec/#{snake_case}_view_spec.rb", "a+") do |file|
|
111
|
+
file.write(view_rspec_snippet)
|
112
|
+
end
|
113
|
+
# Create Controller
|
114
|
+
controller_snippet = <<-EOF
|
115
|
+
class #{file_name}Controller
|
116
|
+
end
|
117
|
+
EOF
|
118
|
+
File.open("#{snake_case}_controller.rb", "a+") do |file|
|
119
|
+
file.write(controller_snippet)
|
120
|
+
# Create Controller RSpec tests
|
121
|
+
controller_rspec_snippet = <<-EOF
|
122
|
+
require_relative '../#{snake_case}_controller'
|
123
|
+
|
124
|
+
describe '#{file_name} Controller' do
|
125
|
+
end
|
126
|
+
EOF
|
127
|
+
File.open("spec/#{snake_case}_controller_spec.rb", "a+") do |file|
|
128
|
+
file.write(controller_rspec_snippet)
|
129
|
+
end
|
130
|
+
end
|
131
|
+
end # Confirm file type and presence of arguments
|
132
|
+
end
|
133
|
+
else
|
134
|
+
puts usage
|
135
|
+
end # Confirm regex
|
136
|
+
elsif (file_type.in ["runner"])
|
137
|
+
runner_snippet = <<-EOF
|
138
|
+
require_relative ''
|
139
|
+
EOF
|
140
|
+
File.open("runner.rb", "a+") do |file|
|
141
|
+
file.write(runner_snippet)
|
142
|
+
end
|
143
|
+
else
|
144
|
+
puts usage
|
145
|
+
end # Confirm arguments
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require_relative 'spec_helper'
|
metadata
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: tdd_scaffold
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Ibraheem Abdul-Malik
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-12-08 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: A tool for TDD scaffolding
|
14
|
+
email: ibraheem4@gmail.com
|
15
|
+
executables:
|
16
|
+
- scaffold
|
17
|
+
extensions: []
|
18
|
+
extra_rdoc_files: []
|
19
|
+
files:
|
20
|
+
- ".rspec"
|
21
|
+
- bin/scaffold
|
22
|
+
- lib/helper_utils.rb
|
23
|
+
- lib/tdd_scaffold.rb
|
24
|
+
- spec/spec_helper.rb
|
25
|
+
- spec/tdd_scaffold_spec.rb
|
26
|
+
homepage: http://rubygems.org/gems/tdd_scaffold
|
27
|
+
licenses:
|
28
|
+
- MIT
|
29
|
+
metadata: {}
|
30
|
+
post_install_message:
|
31
|
+
rdoc_options: []
|
32
|
+
require_paths:
|
33
|
+
- lib
|
34
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
35
|
+
requirements:
|
36
|
+
- - ">="
|
37
|
+
- !ruby/object:Gem::Version
|
38
|
+
version: '0'
|
39
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
40
|
+
requirements:
|
41
|
+
- - ">="
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
44
|
+
requirements: []
|
45
|
+
rubyforge_project:
|
46
|
+
rubygems_version: 2.5.1
|
47
|
+
signing_key:
|
48
|
+
specification_version: 4
|
49
|
+
summary: Scaffolding!
|
50
|
+
test_files: []
|