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 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
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/ruby
2
+
3
+ require 'tdd_scaffold'
@@ -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
@@ -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
@@ -0,0 +1,2 @@
1
+ require_relative '../helper_utils'
2
+ require_relative '../tdd_scaffold'
@@ -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: []