mynatra 0.1.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/.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: []
|