api-document-generator 0.0.2 → 0.0.6

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 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: