endleaf 0.2.0 → 0.3.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.
- checksums.yaml +4 -4
- data/README.md +15 -0
- data/app/controllers/endleaf/pages_controller.rb +18 -2
- data/lib/endleaf/config.rb +6 -0
- data/lib/endleaf/version.rb +1 -1
- data/lib/endleaf.rb +1 -0
- data/lib/tasks/endleaf/render.rake +13 -11
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 90f0e34500f5b54264548be3dcc719321a373698836ab9e4947895f76525ec7e
|
4
|
+
data.tar.gz: 786a0759dc2c2dc0d685bfb94e9adc560476a86aeb25240b9d5add113b64a3f6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4304bce0e6ccd3d3e56f272b948d2dbf8ef7de06c016f25452ee9994ad494450222be0214dae79e9000bec431737dc7a08af753e60a9f3d52dfc785a2c8f87fd
|
7
|
+
data.tar.gz: 3353e33205c82259354930e068d08d6c54e7f9e3baee42860151e2980393b19ec4497e35c6d0a185be323362fab01ea29522337befa0834d6c1b54ed1f6945bd
|
data/README.md
CHANGED
@@ -23,6 +23,13 @@ end
|
|
23
23
|
scope "/pages", constraints: { path: /pages\/.*/ } do
|
24
24
|
get "*page", to: "endleaf/pages#show"
|
25
25
|
end
|
26
|
+
|
27
|
+
# With custom path and layout
|
28
|
+
# path: app/views/posts
|
29
|
+
# layout: app/views/layouts/posts.html.erb
|
30
|
+
scope "/posts", constraints: { path: /posts\/.*/ } do
|
31
|
+
get "*page", to: "endleaf/pages#show", as: :endleaf_posts_post, defaults: { path: "posts", layout: "posts" }
|
32
|
+
end
|
26
33
|
```
|
27
34
|
|
28
35
|
```ruby
|
@@ -38,6 +45,14 @@ get 'endleaf/pages#show' , page: 'about'
|
|
38
45
|
|
39
46
|
```shell
|
40
47
|
bundle exec rake endleaf:render:generate_html
|
48
|
+
|
49
|
+
# custom path, layout, output with variables [path,layout,output]
|
50
|
+
# Example:
|
51
|
+
# path: app/views/posts
|
52
|
+
# layout: app/views/layouts/posts.html.erb
|
53
|
+
# output: public/static/posts
|
54
|
+
bundle exec rake endleaf:render:generate_html\[posts,posts,static\/posts\]
|
55
|
+
|
41
56
|
```
|
42
57
|
|
43
58
|
|
@@ -6,13 +6,29 @@ module Endleaf
|
|
6
6
|
path_segments = params[:page].split('/')
|
7
7
|
view_path = path_segments.join('/')
|
8
8
|
|
9
|
-
render template: "
|
9
|
+
render template: "#{path}/#{view_path}"
|
10
10
|
end
|
11
11
|
|
12
12
|
private
|
13
13
|
|
14
14
|
def set_layout
|
15
|
-
self.class.layout(
|
15
|
+
self.class.layout(page_layout)
|
16
|
+
end
|
17
|
+
|
18
|
+
def page_layout
|
19
|
+
unless params[:layout].blank?
|
20
|
+
params[:layout]
|
21
|
+
else
|
22
|
+
Endleaf::Config::DEFAULT_LAYOUT
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def path
|
27
|
+
unless params[:path].blank?
|
28
|
+
params[:path]
|
29
|
+
else
|
30
|
+
Endleaf::Config::DEFAULT_PATH
|
31
|
+
end
|
16
32
|
end
|
17
33
|
end
|
18
34
|
end
|
data/lib/endleaf/version.rb
CHANGED
data/lib/endleaf.rb
CHANGED
@@ -1,11 +1,16 @@
|
|
1
1
|
namespace :endleaf do
|
2
2
|
namespace :render do
|
3
|
-
desc
|
3
|
+
desc "Render and save static pages as HTML"
|
4
4
|
|
5
|
-
task :generate_html => :environment do
|
5
|
+
task :generate_html, [:path, :layout, :output] => :environment do |t, args|
|
6
6
|
# Manually set the controller path and action name
|
7
|
-
controller_path =
|
8
|
-
action_name =
|
7
|
+
controller_path = "endleaf/pages"
|
8
|
+
action_name = "show"
|
9
|
+
|
10
|
+
# Set static pages directory and layout
|
11
|
+
page_path = args[:path] || Endleaf::Config::DEFAULT_PATH
|
12
|
+
layout = args[:layout] || Endleaf::Config::DEFAULT_LAYOUT
|
13
|
+
output = args[:output].to_s
|
9
14
|
|
10
15
|
controller = ActionController::Base.new
|
11
16
|
controller.request = ActionDispatch::Request.new({})
|
@@ -13,11 +18,8 @@ namespace :endleaf do
|
|
13
18
|
# Set the controller path and action name
|
14
19
|
controller.params = { controller: controller_path, action: action_name }
|
15
20
|
|
16
|
-
# Set static pages directory
|
17
|
-
pages_dir = "pages"
|
18
|
-
|
19
21
|
# Define the directory containing your static pages within the engine
|
20
|
-
pages_directory = Rails.root.join("app", "views",
|
22
|
+
pages_directory = Rails.root.join("app", "views", page_path)
|
21
23
|
|
22
24
|
# Supported template extensions
|
23
25
|
template_extensions = %w[html.erb erb html.haml haml html.slim slim]
|
@@ -33,18 +35,18 @@ namespace :endleaf do
|
|
33
35
|
filename = File.basename(file, '.*')
|
34
36
|
|
35
37
|
# Construct the absolute path to the template file
|
36
|
-
template_path = "#{
|
38
|
+
template_path = "#{page_path}/#{relative_path.sub(/\.(#{template_extensions.join('|')})$/, '')}"
|
37
39
|
puts "template: #{template_path}"
|
38
40
|
|
39
41
|
# Render the page using the controller's render_to_string method
|
40
42
|
html_content = controller.render_to_string(
|
41
43
|
template: template_path,
|
42
|
-
layout:
|
44
|
+
layout: layout
|
43
45
|
)
|
44
46
|
|
45
47
|
# Define the path to save the HTML file in the public directory
|
46
48
|
# Modify save_path logic to generate 'example/index.html' format
|
47
|
-
save_path = Rails.root.join('public', "#{relative_path.sub(/\.html\.erb$/, '')}/index.html")
|
49
|
+
save_path = Rails.root.join('public', output, "#{relative_path.sub(/\.html\.erb$/, '')}/index.html")
|
48
50
|
|
49
51
|
# Create directories if they don't exist
|
50
52
|
FileUtils.mkdir_p(File.dirname(save_path))
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: endleaf
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Wittawas W
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-10-
|
11
|
+
date: 2023-10-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -37,6 +37,7 @@ files:
|
|
37
37
|
- app/controllers/endleaf/pages_controller.rb
|
38
38
|
- app/views/layouts/endleaf.html.erb
|
39
39
|
- lib/endleaf.rb
|
40
|
+
- lib/endleaf/config.rb
|
40
41
|
- lib/endleaf/engine.rb
|
41
42
|
- lib/endleaf/railtie.rb
|
42
43
|
- lib/endleaf/version.rb
|