api-document-generator 0.0.0 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 17d9db8d7f67e8f95e305436ac9a23912a6583bd929a36efcd96149b2ffa751f
4
- data.tar.gz: 1a27e8f02e23779422b4fe88e1b22c487b3566092eb994665f7a755561dd32d8
3
+ metadata.gz: 6321821bddfac046fc70de339224a1d874305b79b52eafe06c024464b3ae0f26
4
+ data.tar.gz: ac629197affa7839d90282efaa47d3fcce9d2331e522abc350ff5977cdc24067
5
5
  SHA512:
6
- metadata.gz: 651c1518ccad8dda6c2d60c41c304c9e64d710fa4b1c0fff24d4bea88f98f56b7dad3967801260fa84eab742c80d674024cf0035630f4b6e70beb69887d9c8ee
7
- data.tar.gz: 353cbd393a7facf7448ea1fc846d09e99e35f4491731be7bbc8e215633da5604e0e85de62d410c4265781cda927cab28802e27f244d68a65fed9e1b534d47059
6
+ metadata.gz: 027ae92f3c4e56ab8895c57a0e799efd4ac182485edb6ddbac2f2366cfb8f3eaa098f794e55eb51aaea55e80df4517c93bf2e47ebf0edb9238a0ed423e66da2e
7
+ data.tar.gz: f6750c0a291832c46514b8cb8ba81cfd73c8e5cc17f735d8c80b1f088bdc9d4849f07176a8a6f3a919d141c3a66e4c05582801d73c556c79a728a5d5a95ceb63
data/bin/adg ADDED
@@ -0,0 +1,22 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'api_document_generator'
4
+ require 'api_document_generator/api_grabber'
5
+ require 'api_document_generator/page_writer'
6
+
7
+ command = ARGV[0]
8
+
9
+ if command == "install"
10
+ ApiDocumentGenerator.install
11
+ puts "\e[32mInstallation competed!\e[0m"
12
+ end
13
+
14
+ if command == "run"
15
+ ApiDocumentGenerator.generate_api_document
16
+ puts "\e[32mApi document generated!\e[0m"
17
+ end
18
+
19
+ if command == 'uninstall'
20
+ ApiDocumentGenerator.uninstall
21
+ puts "\e[33mApi Document Generator had been uninstalled.. Bye :'(\e[0m"
22
+ end
@@ -0,0 +1,49 @@
1
+ class ApiDocumentGenerator::ApiGrabber
2
+ def self.grab_apis_params(controllers)
3
+ controllers.keys.each do |controller|
4
+ c_controller = controller.contantize.new
5
+ param_hash = c_controller.parameters_for_different_actions
6
+ controllers[controller][:resources] = c_controller.is_resources
7
+ controllers[controller][:exclude_actions] = c_controller.exclude_actions
8
+
9
+ controllers[controller][:actions].each do |action|
10
+ params = param_hash[action[:action].to_sym]
11
+
12
+ controllers[controller][:actions][:params] = params
13
+ end
14
+ end
15
+
16
+ add_routes(controllers)
17
+ end
18
+
19
+ def self.add_routes(controllers)
20
+ insert_lines = [
21
+ " namespace :api do\n",
22
+ " end \n"
23
+ ]
24
+
25
+ default_actions = ["index", "show", "new", "edit", "create", "delete", "update"]
26
+
27
+ controllers.each do |k, v|
28
+ path = v[:path]
29
+
30
+ insert_lines.insert(-1, " #{v[:resources] ? ('resources') : ('resource')} :#{path.split("/").last}, only : #{default_actions - v[:exclude_actions]} do\n")
31
+ insert_lines.insert(-1, " end\n")
32
+
33
+ v[:actions].each do |action|
34
+ if !default_actions.include?(action[:action])
35
+ insert_lines.insert(-2, " #{action[:method].downcase} :#{action[:action]}\n")
36
+ end
37
+ end
38
+ end
39
+
40
+ File.open(file_name, 'r+') do |f|
41
+ routes = f.each_line.to_a
42
+ end_line = routes.delete_at(-1)
43
+
44
+ routes = routes + insert_lines + [end_line]
45
+ f.rewind
46
+ f.write(routes.join)
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,3 @@
1
+ class ApiDocumentGenerator::PageWriter
2
+
3
+ end
@@ -1,5 +1,48 @@
1
- class ApiDocumentGenerator
2
- def self.hi
3
- puts "Hello this is my api documentat generator gem!"
1
+ require 'api_document_generator/api_grabber'
2
+ require 'api_document_generaor/page_writer'
3
+
4
+ class ApiDocumentGenerator
5
+ class << self
6
+ def initialize
7
+ install
8
+
9
+ controllers = {}
10
+ Rails.application.routes.routes.each do |route|
11
+ controller_path = route.defaults[:controller]
12
+
13
+ if controller_path
14
+ controller_name = controller_path.split('/').map(&:humanize).join('::')
15
+
16
+ if controller_name.constantize.include?(Api::GeneratorHelper)
17
+ controllers[controller_name] ||= {path: controller_path, actions: []}
18
+
19
+ controllers[controller_name][:actions].push({action: route.defaults[:action], method: route.verb})
20
+ end
21
+ end
22
+ end
23
+
24
+ generate_api_document(controllers)
25
+ end
26
+
27
+ def install
28
+ if Dir.exist?('public') == false
29
+ `mkdir public`
30
+ end
31
+ end
32
+
33
+ def generate_api_document(controllers)
34
+ apis = ApiDocumentGenerator::ApiGrabber.grab_apis(controllers)
35
+ # api_document = ApiDocumentGenerator::PageWriter(apis)
36
+
37
+ # File.open('public/api_document', 'w') do |f|
38
+ # api_document.each do |line|
39
+ # f.write(line + "\n")
40
+ # end
41
+ # end
42
+ end
43
+
44
+ def uninstall
45
+ `rm -rf public/api_document`
46
+ end
4
47
  end
5
48
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: api-document-generator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.0
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alex Koe(shushi)
@@ -12,11 +12,15 @@ date: 2021-11-16 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Shushi first gem!
14
14
  email: blackshushi4571@gmail.com
15
- executables: []
15
+ executables:
16
+ - adg
16
17
  extensions: []
17
18
  extra_rdoc_files: []
18
19
  files:
20
+ - bin/adg
19
21
  - lib/api_document_generator.rb
22
+ - lib/api_document_generator/api_grabber.rb
23
+ - lib/api_document_generator/page_writer.rb
20
24
  homepage: https://github.com/blackshushi/api_document_generator
21
25
  licenses: []
22
26
  metadata: {}