acos_jekyll_openapi_helper 1.0.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.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/acos_jekyll_openapi.rb +207 -0
  3. metadata +43 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 2f031059c47d7e93635b131c00549a5cd0c0808c18ab62374f03643316cbee4e
4
+ data.tar.gz: 73382a34bbd3de1d7fc6efcec7a27c98443cef7a755c955a9cef97b2a961a8a0
5
+ SHA512:
6
+ metadata.gz: df841fbebdabdf441f26c23ca11fc6611f38547b9119c10e6c58dd7a3c1a066e5ec6d98c3a1dab31a0b33ed220b8c7a853bbdc699437eb396ebd12dd1ba0b6fc
7
+ data.tar.gz: e4d1b2c48d89eeca46630df996b2018f11f304d2ef83de03362f77abd2e7c27a41c7a03e2d2a6d599acfd7eb18bfb6f6b8b0552a131d3e08697b507f52487989
@@ -0,0 +1,207 @@
1
+ require 'json'
2
+
3
+ class AcosOpenApiHelper
4
+ def self.generate_pages(json_file, basePath, output_path)
5
+
6
+ puts "Loading json file: %s" % [json_file]
7
+ fileHelper = JsonFileHelper.new(json_file)
8
+ fileHelper.load
9
+
10
+ engine = PageEngine.new(fileHelper.json_data, basePath, output_path, json_file)
11
+ engine.generate
12
+ end
13
+
14
+ def self.generate_pages_from_data(datafolder, basePath, output_path)
15
+ json_files = Dir["%s/*.json" % datafolder]
16
+ json_files.each do | jf |
17
+ puts "Generating pages based on: %s" % jf
18
+ generate_pages(jf, basePath, output_path)
19
+ end
20
+
21
+ end
22
+ end
23
+
24
+ class AcosOpenApiHelper::JsonFileHelper
25
+ include JSON
26
+ def initialize(path)
27
+ @path = path
28
+ end
29
+
30
+ def path
31
+ @path
32
+ end
33
+
34
+ def json_data
35
+ @json_data
36
+ end
37
+
38
+
39
+ def load
40
+ file = File.read(@path)
41
+ @json_data = JSON.parse(file)
42
+ end
43
+ end
44
+
45
+ class AcosOpenApiHelper::PageEngine
46
+ def initialize(data, basePath, output_path, swaggerfile)
47
+ @data = data
48
+ @output_path = output_path
49
+ #@sidebar = sidebar
50
+ @swaggerfile = swaggerfile
51
+ @basePath = basePath
52
+ end
53
+
54
+ def generate
55
+ puts "generating pages..."
56
+ cnt = 0
57
+ puts "Open API version %s" % @data['openapi']
58
+ docTitle = @data["info"]["title"]
59
+ sidebar = "%s_sidebar" % docTitle
60
+ menu = AcosOpenApiHelper::SidebarMenu.new()
61
+ @data['paths'].each do |path|
62
+ #puts "Prop: %s at counter %s" % [path, cnt]
63
+ _path = path[0] #path of swagger method
64
+ _methods = @data['paths'][_path]
65
+ #puts "Path: %s has methods: %s " % [_path, _methods]
66
+ puts "Methods: %s" % _methods
67
+ puts "Path: %s" % [_path]
68
+ #Should not need this. yet...
69
+ # _methods.each do | _method |
70
+ # puts "Method: %s " % _method
71
+ # _md = _methods[_method]
72
+ # puts "Method description: %s" % [_md]
73
+ # end
74
+ #@prop = @data['paths'][cnt]
75
+ #puts "Found property %s" [@prop]
76
+ #puts "Constants: %s, %s, %s, %s" % [_path, @output_path, @swaggerfile, @sidebar]
77
+ writer = AcosOpenApiHelper::PageCreator.new(_path, @basePath, @output_path, @swaggerfile, sidebar)
78
+ writer.write
79
+ _permalink =AcosOpenApiHelper::PermalinkGenerator.create(_path, @swaggerfile)
80
+ _menuItem = AcosOpenApiHelper::MenuItem.new(_path, _permalink)
81
+ menu.add(_menuItem)
82
+ cnt = cnt + 1
83
+
84
+ end
85
+ puts "Done generating %s pages..." % cnt
86
+ puts "Writing menu"
87
+ menu.write("%s/_data/sidebars" % @basePath, sidebar, docTitle)
88
+ end
89
+
90
+ end
91
+
92
+ class AcosOpenApiHelper::SidebarMenu
93
+ @@entries = Array.new
94
+ #attr_accessor :title, :url
95
+
96
+ def self.all_entries
97
+ @@entries
98
+ end
99
+
100
+ def add(entry)
101
+ @@entries.push(entry)
102
+ end
103
+
104
+
105
+ def initialize()
106
+ # @title = title
107
+ # @url = url
108
+ #@@entries << self
109
+ end
110
+
111
+ def write (output_path, name, menuTitle)
112
+ _standardLines = [
113
+ "# This is your sidebar TOC. The sidebar code loops through sections here and provides the appropriate formatting.",
114
+ "entries:",
115
+ "- title: sidebar",
116
+ " # product: Documentation",
117
+ " # version: 1.0",
118
+ " folders:",
119
+ " - title: %s" % menuTitle,
120
+ " output: web",
121
+ " type: frontmatter",
122
+ " folderitems: "
123
+ ]
124
+ puts "Writing menu with length: %s" % @@entries.length
125
+ @@entries.each do | item |
126
+ puts "Entry: %s, url: %s" % [item.title, item.url]
127
+ _standardLines << " - title: %s" % item.title
128
+ _standardLines << " url: /%s.html" % item.url
129
+ _standardLines << " output: web, pdf"
130
+ end
131
+
132
+ _standardLines << " - title: %s" % "Models"
133
+ _standardLines << " url: /%s.html" % "userapi_components"
134
+ _standardLines << " output: web, pdf"
135
+ # File.open("%s/%s/%s/%s.%s" % [@basePath, "pages", "swagger", @permalink, "md"], "w+") do |f|
136
+ # f.puts(@lines)
137
+ # end
138
+ puts "Writing menu file for %s at %s" % [name, output_path]
139
+ File.open("%s/%s.%s" % [output_path, name, "yml"], "w+") do | f |
140
+ f.puts(_standardLines)
141
+ end
142
+ end
143
+
144
+ end
145
+
146
+ class AcosOpenApiHelper::MenuItem
147
+ def initialize(title, url)
148
+ @title = title
149
+ @url = url
150
+ end
151
+
152
+ def title
153
+ @title
154
+ end
155
+ def url
156
+ @url
157
+ end
158
+ end
159
+
160
+ class AcosOpenApiHelper::PermalinkGenerator
161
+ def self.create(path, swaggerfile)
162
+ @swaggerfileBase = File.basename(swaggerfile, ".*")
163
+ @permalinkBase = "%s_%s" % [@swaggerfileBase, path]
164
+ @permalink = @permalinkBase.gsub(/\s+|{|}|\//, "_").downcase
165
+ return @permalink
166
+ end
167
+
168
+ def permalink
169
+ @permalink
170
+ end
171
+
172
+ end
173
+
174
+ class AcosOpenApiHelper::PageCreator
175
+ def initialize(path, basePath, output_path, swaggerfile, sidebar)
176
+ puts "Initialize intput %s, %s, %s, %s" % [path, output_path, swaggerfile, sidebar]
177
+ @path = path
178
+ @output_path = output_path
179
+ @swaggerfile = swaggerfile
180
+ @sidebar = sidebar
181
+ @basePath = basePath
182
+ @swaggerfileBase = File.basename(@swaggerfile, ".*")
183
+ @permalink = AcosOpenApiHelper::PermalinkGenerator.create(path, @swaggerfile)
184
+ @lines = [
185
+ "---",
186
+ "title: User API %s" % path,
187
+ "keywords: json, openapi",
188
+ "# summary: test med json fil",
189
+ "sidebar: %s" % @sidebar,
190
+ "permalink: %s.html" % @permalink,
191
+ "folder: swagger",
192
+ "toc: false",
193
+ "swaggerfile: %s" % @swaggerfileBase,
194
+ "swaggerpath: paths",
195
+ "swaggerkey: %s" % @path,
196
+ "---",
197
+ "{\% include swagger_json/get_path.md \%}"
198
+ ]
199
+ end
200
+
201
+ def write
202
+ File.open("%s/%s/%s/%s.%s" % [@basePath, "pages", "swagger", @permalink, "md"], "w+") do |f|
203
+ f.puts(@lines)
204
+ end
205
+ end
206
+ end
207
+
metadata ADDED
@@ -0,0 +1,43 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: acos_jekyll_openapi_helper
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Acos AS
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2019-05-23 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: A gem to generate page entries for jekyll sites
14
+ email: utvikling@acos.no
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - lib/acos_jekyll_openapi.rb
20
+ homepage: https://rubygems.org/gems/acos_jekyll_openapi_helper
21
+ licenses:
22
+ - MIT
23
+ metadata: {}
24
+ post_install_message:
25
+ rdoc_options: []
26
+ require_paths:
27
+ - lib
28
+ required_ruby_version: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ required_rubygems_version: !ruby/object:Gem::Requirement
34
+ requirements:
35
+ - - ">="
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ requirements: []
39
+ rubygems_version: 3.0.3
40
+ signing_key:
41
+ specification_version: 4
42
+ summary: Open API json file helper
43
+ test_files: []