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.
@@ -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,3 @@
1
+ <link rel="stylesheet" href="/styles/main.css">
2
+
3
+ <p> <%= Time.now.year %> myatra
@@ -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
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+ require_relative "mynatra/version"
3
+
4
+ module Mynatra
5
+ class Error < StandardError; end
6
+ # Your code goes here...
7
+ end
@@ -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
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Mynatra
4
+ VERSION = "0.1.0"
5
+ 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: []