perron 0.18.0 → 1.1.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 (66) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +11 -15
  3. data/app/controllers/perron/concierge_controller.rb +16 -0
  4. data/app/helpers/perron/markdown_helper.rb +3 -2
  5. data/app/helpers/perron/meta_tags_helper.rb +3 -9
  6. data/app/helpers/perron/paginate_helper.rb +40 -0
  7. data/app/views/perron/concierge/show.html.erb +271 -0
  8. data/lib/generators/rails/content/USAGE +21 -4
  9. data/lib/generators/rails/content/content_generator.rb +16 -12
  10. data/lib/generators/rails/content/templates/controller.rb.tt +6 -0
  11. data/lib/generators/rails/content/templates/model.rb.tt +1 -1
  12. data/lib/perron/assets/icon.png +0 -0
  13. data/lib/perron/assets/icon.svg +1 -0
  14. data/lib/perron/collection.rb +2 -1
  15. data/lib/perron/configuration.rb +27 -2
  16. data/lib/perron/data_source/class_methods.rb +8 -0
  17. data/lib/perron/data_source.rb +20 -33
  18. data/lib/perron/development_feed_server.rb +69 -0
  19. data/lib/perron/engine.rb +32 -1
  20. data/lib/perron/errors.rb +2 -0
  21. data/lib/perron/feeds.rb +4 -3
  22. data/lib/perron/html_processor/absolute_urls.rb +27 -0
  23. data/lib/perron/html_processor/base.rb +2 -2
  24. data/lib/perron/html_processor.rb +7 -11
  25. data/lib/{generators/perron/templates → perron/install}/README.md.tt +7 -9
  26. data/lib/perron/install/deploy.yml +15 -0
  27. data/lib/perron/install.rb +26 -0
  28. data/lib/perron/markdown.rb +2 -2
  29. data/lib/perron/output_server.rb +9 -0
  30. data/lib/perron/paginate.rb +58 -0
  31. data/lib/perron/relation.rb +24 -6
  32. data/lib/perron/resource/adjacency.rb +70 -0
  33. data/lib/perron/resource/associations.rb +1 -1
  34. data/lib/perron/resource/class_methods.rb +6 -0
  35. data/lib/perron/resource/configuration.rb +12 -4
  36. data/lib/perron/resource/metadata.rb +19 -4
  37. data/lib/perron/resource/publishable.rb +2 -0
  38. data/lib/perron/resource/related.rb +32 -31
  39. data/lib/perron/resource/sourceable.rb +98 -16
  40. data/lib/perron/resource.rb +8 -0
  41. data/lib/perron/site/builder/assets.rb +1 -1
  42. data/lib/perron/site/builder/feeds/atom.erb +44 -0
  43. data/lib/perron/site/builder/feeds/atom.rb +41 -0
  44. data/lib/perron/site/builder/feeds/json.erb +19 -0
  45. data/lib/perron/site/builder/feeds/json.rb +7 -33
  46. data/lib/perron/site/builder/feeds/rss.erb +28 -0
  47. data/lib/perron/site/builder/feeds/rss.rb +6 -28
  48. data/lib/perron/site/builder/feeds/template.rb +63 -0
  49. data/lib/perron/site/builder/feeds.rb +8 -3
  50. data/lib/perron/site/builder/page.rb +19 -4
  51. data/lib/perron/site/builder/paths.rb +75 -13
  52. data/lib/perron/site/builder/route_resources.rb +79 -0
  53. data/lib/perron/site/builder/sitemap.rb +71 -20
  54. data/lib/perron/site/builder.rb +25 -1
  55. data/lib/perron/site/validate.rb +19 -7
  56. data/lib/perron/site.rb +7 -0
  57. data/lib/perron/tasks/build.rake +6 -7
  58. data/lib/perron/tasks/deploy.rake +58 -0
  59. data/lib/perron/tasks/install.rake +12 -0
  60. data/lib/perron/version.rb +1 -1
  61. data/lib/perron.rb +1 -0
  62. data/perron.gemspec +1 -1
  63. metadata +25 -8
  64. data/lib/generators/perron/install_generator.rb +0 -32
  65. data/lib/perron/html_processor/syntax_highlight.rb +0 -32
  66. /data/lib/{generators/perron/templates → perron/install}/initializer.rb.tt +0 -0
@@ -0,0 +1,58 @@
1
+ namespace :perron do
2
+ desc "Deploy static site using Beam Up"
3
+ task deploy: :environment do
4
+ begin
5
+ require "beam_up"
6
+ rescue LoadError
7
+ raise LoadError, <<~MSG
8
+ Beam Up is required for the deploy task to run.
9
+
10
+ Add it to your Gemfile:
11
+ gem "beam_up"
12
+
13
+ Read more: https://perron.railsdesigner.com/docs/deploy/
14
+ MSG
15
+ end
16
+
17
+ config = Rails.root.join("config/deploy.yml")
18
+
19
+ unless config.exist?
20
+ template = File.expand_path("../install/deploy.yml", __dir__)
21
+ FileUtils.cp(template, config)
22
+
23
+ puts "Created config/deploy.yml"
24
+ end
25
+
26
+ beamed = BeamUp.with_progress do
27
+ BeamUp.deploy!(
28
+ Perron.configuration.output,
29
+ config_file: "config/deploy.yml"
30
+ )
31
+ end
32
+
33
+ puts beamed.message
34
+ puts "Deploy ID: #{beamed.deploy_id}" if beamed.deploy_id
35
+ end
36
+
37
+ namespace :deploy do
38
+ desc "Initialize deploy configuration with Beam Up"
39
+ task :init, [:provider] do |task, arguments|
40
+ begin
41
+ require "beam_up"
42
+ rescue LoadError
43
+ raise LoadError, <<~MSG
44
+ Beam Up is required for the deploy task to run.
45
+
46
+ Add it to your Gemfile:
47
+ gem "beam_up"
48
+
49
+ See for more: https://perron.railsdesigner.com/docs/deploy/
50
+ MSG
51
+ end
52
+
53
+ path = BeamUp.init!(arguments[:provider], config_file: "config/deploy.yml")
54
+
55
+ puts "Configured Beam Up in #{path}"
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,12 @@
1
+ namespace :perron do
2
+ desc "Setup Perron"
3
+ task :install do
4
+ previous_location = ENV["LOCATION"]
5
+
6
+ ENV["LOCATION"] = File.expand_path("../install.rb", __dir__)
7
+
8
+ Rake::Task["app:template"].invoke
9
+
10
+ ENV["LOCATION"] = previous_location
11
+ end
12
+ end
@@ -1,3 +1,3 @@
1
1
  module Perron
2
- VERSION = "0.18.0"
2
+ VERSION = "1.1.0"
3
3
  end
data/lib/perron.rb CHANGED
@@ -6,6 +6,7 @@ require "perron/deprecator"
6
6
  require "perron/errors"
7
7
  require "perron/site"
8
8
  require "perron/relation"
9
+ require "perron/paginate"
9
10
  require "perron/content/data"
10
11
  require "perron/resource"
11
12
  require "perron/markdown"
data/perron.gemspec CHANGED
@@ -19,7 +19,7 @@ Gem::Specification.new do |spec|
19
19
  spec.required_ruby_version = ">= 3.4.0"
20
20
 
21
21
  spec.add_dependency "rails", ">= 7.2.0"
22
- spec.add_dependency "mata", "~> 0.8.0"
22
+ spec.add_dependency "mata", "~> 0.10.0"
23
23
 
24
24
  spec.add_runtime_dependency "csv"
25
25
  spec.add_runtime_dependency "json"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: perron
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.18.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rails Designer Developers
@@ -29,14 +29,14 @@ dependencies:
29
29
  requirements:
30
30
  - - "~>"
31
31
  - !ruby/object:Gem::Version
32
- version: 0.8.0
32
+ version: 0.10.0
33
33
  type: :runtime
34
34
  prerelease: false
35
35
  version_requirements: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: 0.8.0
39
+ version: 0.10.0
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: csv
42
42
  requirement: !ruby/object:Gem::Requirement
@@ -92,18 +92,18 @@ files:
92
92
  - Gemfile.lock
93
93
  - README.md
94
94
  - Rakefile
95
+ - app/controllers/perron/concierge_controller.rb
95
96
  - app/controllers/perron/searches_controller.rb
96
97
  - app/helpers/perron/erb_helper.rb
97
98
  - app/helpers/perron/feeds_helper.rb
98
99
  - app/helpers/perron/markdown_helper.rb
99
100
  - app/helpers/perron/meta_tags_helper.rb
101
+ - app/helpers/perron/paginate_helper.rb
102
+ - app/views/perron/concierge/show.html.erb
100
103
  - bin/console
101
104
  - bin/rails
102
105
  - bin/release
103
106
  - bin/setup
104
- - lib/generators/perron/install_generator.rb
105
- - lib/generators/perron/templates/README.md.tt
106
- - lib/generators/perron/templates/initializer.rb.tt
107
107
  - lib/generators/rails/content/USAGE
108
108
  - lib/generators/rails/content/content_generator.rb
109
109
  - lib/generators/rails/content/templates/controller.rb.tt
@@ -112,6 +112,8 @@ files:
112
112
  - lib/generators/rails/content/templates/root.erb.tt
113
113
  - lib/generators/rails/content/templates/show.html.erb.tt
114
114
  - lib/perron.rb
115
+ - lib/perron/assets/icon.png
116
+ - lib/perron/assets/icon.svg
115
117
  - lib/perron/collection.rb
116
118
  - lib/perron/configuration.rb
117
119
  - lib/perron/content/data.rb
@@ -121,20 +123,27 @@ files:
121
123
  - lib/perron/data_source/item.rb
122
124
  - lib/perron/data_source/proxy.rb
123
125
  - lib/perron/deprecator.rb
126
+ - lib/perron/development_feed_server.rb
124
127
  - lib/perron/engine.rb
125
128
  - lib/perron/errors.rb
126
129
  - lib/perron/feeds.rb
127
130
  - lib/perron/html_processor.rb
131
+ - lib/perron/html_processor/absolute_urls.rb
128
132
  - lib/perron/html_processor/base.rb
129
133
  - lib/perron/html_processor/lazy_load_images.rb
130
- - lib/perron/html_processor/syntax_highlight.rb
131
134
  - lib/perron/html_processor/target_blank.rb
135
+ - lib/perron/install.rb
136
+ - lib/perron/install/README.md.tt
137
+ - lib/perron/install/deploy.yml
138
+ - lib/perron/install/initializer.rb.tt
132
139
  - lib/perron/markdown.rb
133
140
  - lib/perron/metatags.rb
134
141
  - lib/perron/output_server.rb
142
+ - lib/perron/paginate.rb
135
143
  - lib/perron/refinements/delete_suffixes.rb
136
144
  - lib/perron/relation.rb
137
145
  - lib/perron/resource.rb
146
+ - lib/perron/resource/adjacency.rb
138
147
  - lib/perron/resource/associations.rb
139
148
  - lib/perron/resource/class_methods.rb
140
149
  - lib/perron/resource/configuration.rb
@@ -158,16 +167,24 @@ files:
158
167
  - lib/perron/site/builder/additional_routes.rb
159
168
  - lib/perron/site/builder/assets.rb
160
169
  - lib/perron/site/builder/feeds.rb
170
+ - lib/perron/site/builder/feeds/atom.erb
171
+ - lib/perron/site/builder/feeds/atom.rb
161
172
  - lib/perron/site/builder/feeds/author.rb
173
+ - lib/perron/site/builder/feeds/json.erb
162
174
  - lib/perron/site/builder/feeds/json.rb
175
+ - lib/perron/site/builder/feeds/rss.erb
163
176
  - lib/perron/site/builder/feeds/rss.rb
177
+ - lib/perron/site/builder/feeds/template.rb
164
178
  - lib/perron/site/builder/page.rb
165
179
  - lib/perron/site/builder/paths.rb
166
180
  - lib/perron/site/builder/public_files.rb
181
+ - lib/perron/site/builder/route_resources.rb
167
182
  - lib/perron/site/builder/sitemap.rb
168
183
  - lib/perron/site/validate.rb
169
184
  - lib/perron/tasks/build.rake
170
185
  - lib/perron/tasks/clobber.rake
186
+ - lib/perron/tasks/deploy.rake
187
+ - lib/perron/tasks/install.rake
171
188
  - lib/perron/tasks/sync_sources.rake
172
189
  - lib/perron/tasks/validate.rake
173
190
  - lib/perron/version.rb
@@ -192,7 +209,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
192
209
  - !ruby/object:Gem::Version
193
210
  version: '0'
194
211
  requirements: []
195
- rubygems_version: 4.0.6
212
+ rubygems_version: 4.0.14
196
213
  specification_version: 4
197
214
  summary: Rails-based static site generator
198
215
  test_files: []
@@ -1,32 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Perron
4
- class InstallGenerator < Rails::Generators::Base
5
- source_root File.expand_path("templates", __dir__)
6
-
7
- desc "Install Perron in your Rails app"
8
-
9
- def copy_initializer
10
- template "initializer.rb.tt", "config/initializers/perron.rb"
11
- end
12
-
13
- def create_data_directory
14
- template "README.md.tt", "app/content/data/README.md"
15
- end
16
-
17
- def add_markdown_gems
18
- append_to_file "Gemfile", <<~RUBY
19
-
20
- # Perron supports Markdown rendering using one of the following gems.
21
- # Uncomment your preferred choice and run `bundle install`
22
- # gem "commonmarker"
23
- # gem "kramdown"
24
- # gem "redcarpet"
25
- RUBY
26
- end
27
-
28
- def gitignore_output_folder
29
- append_to_file ".gitignore", "/#{Perron.configuration.output}/\n"
30
- end
31
- end
32
- end
@@ -1,32 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "rouge"
4
- require "perron/html_processor/base"
5
-
6
- module Perron
7
- class HtmlProcessor
8
- class SyntaxHighlight < HtmlProcessor::Base
9
- def process
10
- Perron.deprecator.deprecation_warning(:syntax_highlight)
11
-
12
- @html.css('pre > code[class*="language-"]').each do |code_block|
13
- language = code_block[:class][/(?<=language-)\S+/]
14
-
15
- next if language.blank?
16
-
17
- code_block.parent.replace(
18
- highlight(code_block.text, with: language)
19
- )
20
- end
21
- end
22
-
23
- private
24
-
25
- def highlight(code_block, with:)
26
- lexer = Rouge::Lexer.find(with) || Rouge::Lexers::PlainText.new
27
-
28
- Rouge::Formatters::HTMLPygments.new(::Rouge::Formatters::HTML.new).format(lexer.lex(code_block))
29
- end
30
- end
31
- end
32
- end