mynatra 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +8 -0
- data/Gemfile +9 -0
- data/Gemfile.lock +107 -0
- data/README.md +35 -0
- data/Rakefile +4 -0
- data/bin/aruba +29 -0
- data/bin/bundle +114 -0
- data/bin/console +15 -0
- data/bin/cucumber +29 -0
- data/bin/cucumber-html-formatter +29 -0
- data/bin/gherkin +29 -0
- data/bin/gherkin-ruby +29 -0
- data/bin/htmldiff +29 -0
- data/bin/ldiff +29 -0
- data/bin/mynatra +29 -0
- data/bin/protoc-gen-ruby +29 -0
- data/bin/rake +29 -0
- data/bin/rpc_server +29 -0
- data/bin/rspec +29 -0
- data/bin/setup +8 -0
- data/bin/thor +29 -0
- data/exe/mynatra +5 -0
- data/lib/generators/Gemfile +8 -0
- data/lib/generators/app.erb +6 -0
- data/lib/generators/controllers/base_controller.erb +22 -0
- data/lib/generators/controllers/resource_controller.erb +52 -0
- data/lib/generators/models/model.erb +61 -0
- data/lib/generators/public/scripts/main.js +0 -0
- data/lib/generators/public/styles/main.css +56 -0
- data/lib/generators/resource.rb +50 -0
- data/lib/generators/scaffolding.rb +46 -0
- data/lib/generators/views/footer.erb +3 -0
- data/lib/generators/views/getting_started.erb +12 -0
- data/lib/generators/views/header.erb +15 -0
- data/lib/generators/views/resource/edit.erb +17 -0
- data/lib/generators/views/resource/index.erb +14 -0
- data/lib/generators/views/resource/new.erb +14 -0
- data/lib/mynatra.rb +7 -0
- data/lib/mynatra/cli.rb +25 -0
- data/lib/mynatra/mynatra.rb +44 -0
- data/lib/mynatra/version.rb +5 -0
- data/mynatra.gemspec +41 -0
- data/pkg/mynatra-0.1.0.gem +0 -0
- metadata +159 -0
@@ -0,0 +1,50 @@
|
|
1
|
+
require 'thor/group'
|
2
|
+
require 'active_support/inflector'
|
3
|
+
|
4
|
+
# Mynatra resource generator
|
5
|
+
module Mynatra
|
6
|
+
module Generators
|
7
|
+
class Resource < Thor::Group
|
8
|
+
include Thor::Actions
|
9
|
+
|
10
|
+
# Takes resource name, arguments
|
11
|
+
argument :name, type: :string
|
12
|
+
argument :attributes, type: :array
|
13
|
+
|
14
|
+
# Generates model.rb file
|
15
|
+
def create_model
|
16
|
+
@name_singular = name.singularize
|
17
|
+
@name_plural = name.pluralize
|
18
|
+
@attributes = attributes
|
19
|
+
puts "This is what @name_singular looks like: #{@name_singular}"
|
20
|
+
puts "This is what @name_plural looks like: #{@name_plural}"
|
21
|
+
puts "This is what @attributes looks like: #{@attributes}"
|
22
|
+
template("models/model.erb", "models/#{name}.rb")
|
23
|
+
end
|
24
|
+
|
25
|
+
# Generate contoller.rb file
|
26
|
+
def create_controller
|
27
|
+
@name_singular = name.singularize
|
28
|
+
@name_plural = name.pluralize
|
29
|
+
@attributes = attributes
|
30
|
+
template("controllers/resource_controller.erb", "controllers/#{name}_controller.rb")
|
31
|
+
end
|
32
|
+
|
33
|
+
# Generate views erb files (index, edit, new)
|
34
|
+
def create_views
|
35
|
+
@name_singular = name.singularize
|
36
|
+
@name_plural = name.pluralize
|
37
|
+
@attributes = attributes
|
38
|
+
template("views/header.erb", "views/header.erb")
|
39
|
+
template("views/resource/edit.erb", "views/#{@name_plural}/edit.erb")
|
40
|
+
template("views/resource/index.erb", "views/#{@name_plural}/index.erb")
|
41
|
+
template("views/resource/new.erb", "views/#{@name_plural}/new.erb")
|
42
|
+
end
|
43
|
+
|
44
|
+
# Sets source root directory
|
45
|
+
def self.source_root
|
46
|
+
File.dirname(__FILE__)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
require 'thor/group'
|
2
|
+
|
3
|
+
# Mynatra scaffolding generator
|
4
|
+
module Mynatra
|
5
|
+
module Generators
|
6
|
+
class Scaffolding < Thor::Group
|
7
|
+
include Thor::Actions
|
8
|
+
|
9
|
+
# Takes in dir, name arguments
|
10
|
+
argument :name, type: :string
|
11
|
+
|
12
|
+
# Generates empty directory
|
13
|
+
def create_dir
|
14
|
+
empty_directory(name)
|
15
|
+
end
|
16
|
+
|
17
|
+
# Generates app.rb file
|
18
|
+
def create_app
|
19
|
+
template("app.erb", "#{name}/app.rb")
|
20
|
+
end
|
21
|
+
|
22
|
+
# Generates controller
|
23
|
+
def create_controller
|
24
|
+
template("controllers/base_controller.erb", "#{name}/controllers/base_controller.rb")
|
25
|
+
end
|
26
|
+
|
27
|
+
# Generates public folder with CSS style sheet
|
28
|
+
def create_public
|
29
|
+
directory("public", "#{name}/public", :recursive => true)
|
30
|
+
end
|
31
|
+
|
32
|
+
# Generates views folder
|
33
|
+
def create_views
|
34
|
+
template("views/footer.erb", "#{name}/views/footer.erb")
|
35
|
+
template("views/getting_started.erb", "#{name}/views/getting_started.erb")
|
36
|
+
template("views/header.erb", "#{name}/views/header.erb")
|
37
|
+
end
|
38
|
+
|
39
|
+
# Sets source root directory
|
40
|
+
def self.source_root
|
41
|
+
File.dirname(__FILE__)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<%%= erb :header %>
|
2
|
+
|
3
|
+
<link rel="stylesheet" href="/styles/main.css">
|
4
|
+
|
5
|
+
<section>
|
6
|
+
<h1><%= @name_singular %></h1>
|
7
|
+
<h1>Getting Started with mynatra</h1>
|
8
|
+
<p>This is the home page of mynatra
|
9
|
+
<p>Please come again!
|
10
|
+
</section>
|
11
|
+
|
12
|
+
<%%= erb :footer %>
|
@@ -0,0 +1,15 @@
|
|
1
|
+
<link rel="stylesheet" href="/styles/main.css">
|
2
|
+
|
3
|
+
<nav>
|
4
|
+
<ul>
|
5
|
+
<li>
|
6
|
+
<a href="/">Home</a>
|
7
|
+
</li>
|
8
|
+
<li>
|
9
|
+
<a href="/<%= @name_plural %>/new">Create new <%= @name_singular %></a>
|
10
|
+
</li>
|
11
|
+
<li>
|
12
|
+
<a href="/<%= @name_plural %>">List & Edit <%= @name_plural %></a>
|
13
|
+
</li>
|
14
|
+
</ul>
|
15
|
+
</nav>
|
@@ -0,0 +1,17 @@
|
|
1
|
+
<%%= erb :header %>
|
2
|
+
|
3
|
+
<div>
|
4
|
+
<form method="POST" action='/<%= @name_plural %>/update/<%%= @<%= @name_singular %>.id %>'>
|
5
|
+
<% @attributes.each do |attribute| %>
|
6
|
+
<p> <%= attribute %>
|
7
|
+
<input name="<%= attribute %>" value="<%%= @<%= @name_singular %>.<%= attribute %> %>"><br>
|
8
|
+
<% end-%>
|
9
|
+
<input type="submit">
|
10
|
+
</form>
|
11
|
+
|
12
|
+
<form method="POST" action="/<%= @name_plural %>/delete/<%%= @<%= @name_singular %>.id %>">
|
13
|
+
<input type="submit" value="delete">
|
14
|
+
</form>
|
15
|
+
</div>
|
16
|
+
|
17
|
+
<%%= erb :footer %>
|
@@ -0,0 +1,14 @@
|
|
1
|
+
<%%= erb :header %>
|
2
|
+
|
3
|
+
<h1><%= @name_plural.capitalize %></h1>
|
4
|
+
<%% @<%= @name_plural %>.each do |<%= @name_singular %>| %>
|
5
|
+
<li><a href="/<%= @name_plural %>/<%%= <%= @name_singular %>.id %>"><%%= <%= @name_singular %>.id %></a></li>
|
6
|
+
<ul>
|
7
|
+
<% @attributes.each do |attribute| %>
|
8
|
+
<li><%= attribute %>: <%%= <%= @name_singular %>.<%= attribute %> %></li>
|
9
|
+
<% end %>
|
10
|
+
</ul>
|
11
|
+
<%% end %>
|
12
|
+
</ul>
|
13
|
+
|
14
|
+
<%%= erb :footer %>
|
@@ -0,0 +1,14 @@
|
|
1
|
+
<%%= erb :header %>
|
2
|
+
|
3
|
+
<div>
|
4
|
+
<h1>New <%= @name_singular.capitalize %></h1>
|
5
|
+
<form method='POST' action='/<%= @name_plural %>/create'>
|
6
|
+
<% @attributes.each do |attribute| %>
|
7
|
+
<p><%= attribute %>:
|
8
|
+
<input name='<%= attribute %>'><br>
|
9
|
+
<% end -%>
|
10
|
+
<input type='submit'>
|
11
|
+
</form>
|
12
|
+
</div>
|
13
|
+
|
14
|
+
<%%= erb :footer %>
|
data/lib/mynatra.rb
ADDED
data/lib/mynatra/cli.rb
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'thor'
|
2
|
+
require 'mynatra'
|
3
|
+
require 'active_support/inflector'
|
4
|
+
require 'generators/scaffolding'
|
5
|
+
require 'generators/resource'
|
6
|
+
|
7
|
+
module Mynatra
|
8
|
+
class CLI < Thor
|
9
|
+
# desc "resource [RESOURCE_NAME] [DIRECTORY DESTINATION]", "Generate a resource"
|
10
|
+
# def resource(name, dir)
|
11
|
+
# Mynatra::Generators::Resource.start([name, dir])
|
12
|
+
# end
|
13
|
+
desc "new [NAME]", "Generate mynatra scaffolding"
|
14
|
+
def new(name)
|
15
|
+
Mynatra::Generators::Scaffolding.start([name.singularize])
|
16
|
+
end
|
17
|
+
|
18
|
+
desc "resource [NAME] [ARG1] [ARG2]", "Generate a resource with 2 arguments i.e mynatra resource post title body"
|
19
|
+
def resource(name, *attributes)
|
20
|
+
puts "The arguments are: #{attributes}"
|
21
|
+
puts "Args is: #{attributes.class}"
|
22
|
+
Mynatra::Generators::Resource.start([ name.singularize, attributes ])
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Mynatra
|
4
|
+
# Test class
|
5
|
+
class User
|
6
|
+
attr_accessor :email, :password
|
7
|
+
|
8
|
+
@@Users = []
|
9
|
+
|
10
|
+
def delete
|
11
|
+
@@Users.each_with_index do |user, index|
|
12
|
+
if self.email == user.email
|
13
|
+
@@Users.delete_at(index)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.create(email)
|
19
|
+
user = User.new
|
20
|
+
user.email = email
|
21
|
+
@@Users << user
|
22
|
+
end
|
23
|
+
|
24
|
+
def self.find_by_email(email)
|
25
|
+
@@Users.each do |user|
|
26
|
+
if user.email == email
|
27
|
+
return user
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def self.create_many
|
33
|
+
@@Users = (1..25).map do |num|
|
34
|
+
user = User.new
|
35
|
+
user.email = "user#{num}@example.com"
|
36
|
+
user
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def self.all
|
41
|
+
@@Users
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
data/mynatra.gemspec
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "lib/mynatra/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |spec|
|
6
|
+
spec.name = "mynatra"
|
7
|
+
spec.version = Mynatra::VERSION
|
8
|
+
spec.authors = ["christian"]
|
9
|
+
spec.email = ["rewindforward@gmail.com"]
|
10
|
+
|
11
|
+
spec.summary = "The fast and quick framework."
|
12
|
+
spec.homepage = "https://github.com/christianarab"
|
13
|
+
spec.required_ruby_version = Gem::Requirement.new(">= 2.4.0")
|
14
|
+
|
15
|
+
# spec.metadata["allowed_push_host"] = "sss: Set to 'http://mygemserver.com'"
|
16
|
+
|
17
|
+
spec.metadata["homepage_uri"] = spec.homepage
|
18
|
+
spec.metadata["source_code_uri"] = "https://github.com/compsciacademy/fulltime-program-2021-Q2/tree/main/Week06/Day29/foodie/"
|
19
|
+
spec.metadata["changelog_uri"] = "https://github.com/compsciacademy/fulltime-program-2021-Q2/tree/main/Week06/Day29/foodie/changelog.md"
|
20
|
+
|
21
|
+
# Specify which files should be added to the gem when it is released.
|
22
|
+
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
23
|
+
spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
24
|
+
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{\A(?:test|spec|features)/}) }
|
25
|
+
end
|
26
|
+
spec.bindir = "exe"
|
27
|
+
spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
|
28
|
+
spec.require_paths = ["lib"]
|
29
|
+
|
30
|
+
# Uncomment to register a new dependency of your gem
|
31
|
+
# spec.add_dependency "example-gem", "~> 1.0"
|
32
|
+
spec.add_dependency "activesupport"
|
33
|
+
spec.add_dependency "thor"
|
34
|
+
|
35
|
+
spec.add_development_dependency "rspec"
|
36
|
+
spec.add_development_dependency "cucumber"
|
37
|
+
spec.add_development_dependency "aruba"
|
38
|
+
|
39
|
+
# For more information and examples about making a new gem, checkout our
|
40
|
+
# guide at: https://bundler.io/guides/creating_gem.html
|
41
|
+
end
|
Binary file
|
metadata
ADDED
@@ -0,0 +1,159 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: mynatra
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- christian
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2021-06-10 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: activesupport
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: thor
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: cucumber
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: aruba
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
description:
|
84
|
+
email:
|
85
|
+
- rewindforward@gmail.com
|
86
|
+
executables:
|
87
|
+
- mynatra
|
88
|
+
extensions: []
|
89
|
+
extra_rdoc_files: []
|
90
|
+
files:
|
91
|
+
- ".gitignore"
|
92
|
+
- Gemfile
|
93
|
+
- Gemfile.lock
|
94
|
+
- README.md
|
95
|
+
- Rakefile
|
96
|
+
- bin/aruba
|
97
|
+
- bin/bundle
|
98
|
+
- bin/console
|
99
|
+
- bin/cucumber
|
100
|
+
- bin/cucumber-html-formatter
|
101
|
+
- bin/gherkin
|
102
|
+
- bin/gherkin-ruby
|
103
|
+
- bin/htmldiff
|
104
|
+
- bin/ldiff
|
105
|
+
- bin/mynatra
|
106
|
+
- bin/protoc-gen-ruby
|
107
|
+
- bin/rake
|
108
|
+
- bin/rpc_server
|
109
|
+
- bin/rspec
|
110
|
+
- bin/setup
|
111
|
+
- bin/thor
|
112
|
+
- exe/mynatra
|
113
|
+
- lib/generators/Gemfile
|
114
|
+
- lib/generators/app.erb
|
115
|
+
- lib/generators/controllers/base_controller.erb
|
116
|
+
- lib/generators/controllers/resource_controller.erb
|
117
|
+
- lib/generators/models/model.erb
|
118
|
+
- lib/generators/public/scripts/main.js
|
119
|
+
- lib/generators/public/styles/main.css
|
120
|
+
- lib/generators/resource.rb
|
121
|
+
- lib/generators/scaffolding.rb
|
122
|
+
- lib/generators/views/footer.erb
|
123
|
+
- lib/generators/views/getting_started.erb
|
124
|
+
- lib/generators/views/header.erb
|
125
|
+
- lib/generators/views/resource/edit.erb
|
126
|
+
- lib/generators/views/resource/index.erb
|
127
|
+
- lib/generators/views/resource/new.erb
|
128
|
+
- lib/mynatra.rb
|
129
|
+
- lib/mynatra/cli.rb
|
130
|
+
- lib/mynatra/mynatra.rb
|
131
|
+
- lib/mynatra/version.rb
|
132
|
+
- mynatra.gemspec
|
133
|
+
- pkg/mynatra-0.1.0.gem
|
134
|
+
homepage: https://github.com/christianarab
|
135
|
+
licenses: []
|
136
|
+
metadata:
|
137
|
+
homepage_uri: https://github.com/christianarab
|
138
|
+
source_code_uri: https://github.com/compsciacademy/fulltime-program-2021-Q2/tree/main/Week06/Day29/foodie/
|
139
|
+
changelog_uri: https://github.com/compsciacademy/fulltime-program-2021-Q2/tree/main/Week06/Day29/foodie/changelog.md
|
140
|
+
post_install_message:
|
141
|
+
rdoc_options: []
|
142
|
+
require_paths:
|
143
|
+
- lib
|
144
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
145
|
+
requirements:
|
146
|
+
- - ">="
|
147
|
+
- !ruby/object:Gem::Version
|
148
|
+
version: 2.4.0
|
149
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
150
|
+
requirements:
|
151
|
+
- - ">="
|
152
|
+
- !ruby/object:Gem::Version
|
153
|
+
version: '0'
|
154
|
+
requirements: []
|
155
|
+
rubygems_version: 3.2.19
|
156
|
+
signing_key:
|
157
|
+
specification_version: 4
|
158
|
+
summary: The fast and quick framework.
|
159
|
+
test_files: []
|