api-document-generator 0.0.2 → 0.0.6

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: ad66014537251556e8ba4e1679ef970301ba2b4bf248947026306fde0cc610b4
4
- data.tar.gz: 30eb5b6eca8b9ba0179743d8434557ef29ea21a2f283cb357c548698e896dbe9
3
+ metadata.gz: d573c2a2002f4f1d887e28623543a55505833855f07de5210b3af4063013af01
4
+ data.tar.gz: 10906b929d5e03e2e59bff6125835e747f1aa4b6b180326588f9bb7fb9ccc912
5
5
  SHA512:
6
- metadata.gz: b16dd5cafa25fbb2e3da5712f51cd93dc75c1514d83f3288f8d78f53b7635e4c0d74969ef0c65c23cd919be92deab84d582b191de0afc3d4c593b3aafedd094d
7
- data.tar.gz: 732fe4c155c29bf4f8179b5e95f88a866afc3dab2125ea2dfd5fc2f55cf97c24522dba5a9cfeea06315e57b9d4b5f96fafd237fde07cb5401b960744f2e1029e
6
+ metadata.gz: 19c600ebd56f6aa0e54026078bc8c08210214a0ab532ac81ea9bec6b1cc3a1e8f4cfbd19c172e76728305483533c8f02a32f46f92730b0ad7d52360197ad89ae
7
+ data.tar.gz: e414a7f359b59affd4b0f94088ee34b2121ab2aa52db44b16c7a4a0417e808b509ade2c8d73bbd9fc9a418fa0a464423ca3f4cb0d1e6a6c759b68939cca042bd
@@ -1,9 +1,51 @@
1
- class ApiDocumentGenerator::ApiGrabber
2
- def self.grab_apis
3
- controllers = Dir['app/controllers/**/*.rb']
4
-
5
- controllers.each do |c|
6
- pp c
7
- end
8
- end
9
- end
1
+ module ApiDocumentGenerator
2
+ class ApiGrabber
3
+ def self.grab_apis_params(controllers)
4
+ controllers.keys.each do |controller|
5
+ c_controller = controller.contantize.new
6
+ param_hash = c_controller.parameters_for_different_actions
7
+ controllers[controller][:resources] = c_controller.is_resources
8
+ controllers[controller][:exclude_actions] = c_controller.exclude_actions
9
+
10
+ controllers[controller][:actions].each do |action|
11
+ params = param_hash[action[:action].to_sym]
12
+
13
+ controllers[controller][:actions][:params] = params
14
+ end
15
+ end
16
+
17
+ add_routes(controllers)
18
+ end
19
+
20
+ def self.add_routes(controllers)
21
+ insert_lines = [
22
+ " namespace :api do\n",
23
+ " end \n"
24
+ ]
25
+
26
+ default_actions = ["index", "show", "new", "edit", "create", "delete", "update"]
27
+
28
+ controllers.each do |k, v|
29
+ path = v[:path]
30
+
31
+ insert_lines.insert(-1, " #{v[:resources] ? ('resources') : ('resource')} :#{path.split("/").last}, only : #{default_actions - v[:exclude_actions]} do\n")
32
+ insert_lines.insert(-1, " end\n")
33
+
34
+ v[:actions].each do |action|
35
+ if !default_actions.include?(action[:action])
36
+ insert_lines.insert(-2, " #{action[:method].downcase} :#{action[:action]}\n")
37
+ end
38
+ end
39
+ end
40
+
41
+ File.open(file_name, 'r+') do |f|
42
+ routes = f.each_line.to_a
43
+ end_line = routes.delete_at(-1)
44
+
45
+ routes = routes + insert_lines + [end_line]
46
+ f.rewind
47
+ f.write(routes.join)
48
+ end
49
+ end
50
+ end
51
+ end
@@ -1,2 +1,5 @@
1
- class ApiDocumentGenerator::PageWriter
2
- end
1
+ module ApiDocumentGenerator
2
+ class PageWriter
3
+
4
+ end
5
+ end
@@ -1,19 +1,37 @@
1
- class ApiDocumentGenerator
1
+ require 'api_document_generator/api_grabber'
2
+ require 'api_document_generaor/page_writer'
3
+
4
+ class ApiDocumentGenerator
2
5
  class << self
3
- def hi
4
- puts "Hello this is my api documentat generator gem!"
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)
5
25
  end
6
26
 
7
27
  def install
8
28
  if Dir.exist?('public') == false
9
29
  `mkdir public`
10
30
  end
11
-
12
- generate_api_document
13
31
  end
14
32
 
15
- def generate_api_document
16
- apis = ApiDocumentGenerator::ApiGrabber.grab_apis
33
+ def generate_api_document(controllers)
34
+ apis = ApiDocumentGenerator::ApiGrabber.grab_apis(controllers)
17
35
  # api_document = ApiDocumentGenerator::PageWriter(apis)
18
36
 
19
37
  # File.open('public/api_document', 'w') do |f|
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.2
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alex Koe(shushi)
@@ -9,7 +9,21 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
  date: 2021-11-16 00:00:00.000000000 Z
12
- dependencies: []
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rails
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 5.0.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 5.0.0
13
27
  description: Shushi first gem!
14
28
  email: blackshushi4571@gmail.com
15
29
  executables: