perron 0.18.0 → 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 (55) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +1 -1
  3. data/app/controllers/perron/concierge_controller.rb +13 -0
  4. data/app/helpers/perron/markdown_helper.rb +2 -2
  5. data/app/views/perron/concierge/show.html.erb +271 -0
  6. data/lib/generators/rails/content/USAGE +21 -4
  7. data/lib/generators/rails/content/content_generator.rb +16 -12
  8. data/lib/generators/rails/content/templates/controller.rb.tt +6 -0
  9. data/lib/generators/rails/content/templates/model.rb.tt +1 -1
  10. data/lib/perron/assets/icon.png +0 -0
  11. data/lib/perron/assets/icon.svg +1 -0
  12. data/lib/perron/configuration.rb +4 -0
  13. data/lib/perron/data_source/class_methods.rb +8 -0
  14. data/lib/perron/data_source.rb +14 -29
  15. data/lib/perron/development_feed_server.rb +69 -0
  16. data/lib/perron/engine.rb +29 -1
  17. data/lib/perron/errors.rb +2 -0
  18. data/lib/perron/feeds.rb +4 -3
  19. data/lib/perron/html_processor/absolute_urls.rb +27 -0
  20. data/lib/perron/html_processor/base.rb +2 -2
  21. data/lib/perron/html_processor.rb +7 -11
  22. data/lib/{generators/perron/templates → perron/install}/README.md.tt +7 -9
  23. data/lib/perron/install.rb +23 -0
  24. data/lib/perron/markdown.rb +2 -2
  25. data/lib/perron/output_server.rb +9 -0
  26. data/lib/perron/resource/adjacency.rb +70 -0
  27. data/lib/perron/resource/associations.rb +1 -1
  28. data/lib/perron/resource/configuration.rb +9 -4
  29. data/lib/perron/resource/metadata.rb +10 -1
  30. data/lib/perron/resource/publishable.rb +2 -0
  31. data/lib/perron/resource/related.rb +32 -31
  32. data/lib/perron/resource/sourceable.rb +39 -9
  33. data/lib/perron/resource.rb +2 -0
  34. data/lib/perron/site/builder/assets.rb +1 -1
  35. data/lib/perron/site/builder/feeds/atom.erb +44 -0
  36. data/lib/perron/site/builder/feeds/atom.rb +41 -0
  37. data/lib/perron/site/builder/feeds/json.erb +19 -0
  38. data/lib/perron/site/builder/feeds/json.rb +7 -33
  39. data/lib/perron/site/builder/feeds/rss.erb +28 -0
  40. data/lib/perron/site/builder/feeds/rss.rb +6 -28
  41. data/lib/perron/site/builder/feeds/template.rb +63 -0
  42. data/lib/perron/site/builder/feeds.rb +8 -3
  43. data/lib/perron/site/builder/paths.rb +58 -14
  44. data/lib/perron/site/builder/route_resources.rb +79 -0
  45. data/lib/perron/site/builder/sitemap.rb +71 -20
  46. data/lib/perron/site/builder.rb +1 -1
  47. data/lib/perron/site/validate.rb +1 -2
  48. data/lib/perron/site.rb +7 -0
  49. data/lib/perron/tasks/build.rake +6 -7
  50. data/lib/perron/tasks/install.rake +12 -0
  51. data/lib/perron/version.rb +1 -1
  52. metadata +18 -5
  53. data/lib/generators/perron/install_generator.rb +0 -32
  54. data/lib/perron/html_processor/syntax_highlight.rb +0 -32
  55. /data/lib/{generators/perron/templates → perron/install}/initializer.rb.tt +0 -0
@@ -19,8 +19,7 @@ module Perron
19
19
 
20
20
  puts [
21
21
  "Validation finished",
22
- (" with #{@failures.count} failures" if failed?),
23
- "."
22
+ (" with #{@failures.count} failures" if failed?)
24
23
  ].join
25
24
  end
26
25
 
data/lib/perron/site.rb CHANGED
@@ -23,6 +23,13 @@ module Perron
23
23
 
24
24
  def collection(name) = Collection.new(name)
25
25
 
26
+ def find_collection(name)
27
+ collection_path = File.join(Perron.configuration.input, name)
28
+ return nil unless File.exist?(collection_path) && File.directory?(collection_path)
29
+
30
+ Collection.new(name)
31
+ end
32
+
26
33
  def data(name = nil)
27
34
  Perron.deprecator.deprecation_warning(:data, "Use Content::Data::ClassName instead, e.g. `Content::Data::Users.all`")
28
35
 
@@ -1,13 +1,12 @@
1
1
  namespace :perron do
2
- task :set_production_env do
3
- unless ENV["RAILS_ENV"]
4
- ENV["RAILS_ENV"] = "production"
5
- puts "RAILS_ENV not set, defaulting to production"
2
+ desc "Generate static HTML files from Perron collections"
3
+ task build: :environment do
4
+ unless Rails.env.production?
5
+ puts "⚠️ Not running in production mode. Unpublished content will be included in the build."
6
+ puts " └─> Run in production mode using: RAILS_ENV=production bin/rails perron:build"
7
+ puts ""
6
8
  end
7
- end
8
9
 
9
- desc "Generate static HTML files from Perron collections"
10
- task build: [:set_production_env, :environment] do
11
10
  Perron::Site.build
12
11
  end
13
12
  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.0.0"
3
3
  end
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.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rails Designer Developers
@@ -92,18 +92,17 @@ 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/views/perron/concierge/show.html.erb
100
102
  - bin/console
101
103
  - bin/rails
102
104
  - bin/release
103
105
  - 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
106
  - lib/generators/rails/content/USAGE
108
107
  - lib/generators/rails/content/content_generator.rb
109
108
  - lib/generators/rails/content/templates/controller.rb.tt
@@ -112,6 +111,8 @@ files:
112
111
  - lib/generators/rails/content/templates/root.erb.tt
113
112
  - lib/generators/rails/content/templates/show.html.erb.tt
114
113
  - lib/perron.rb
114
+ - lib/perron/assets/icon.png
115
+ - lib/perron/assets/icon.svg
115
116
  - lib/perron/collection.rb
116
117
  - lib/perron/configuration.rb
117
118
  - lib/perron/content/data.rb
@@ -121,20 +122,25 @@ files:
121
122
  - lib/perron/data_source/item.rb
122
123
  - lib/perron/data_source/proxy.rb
123
124
  - lib/perron/deprecator.rb
125
+ - lib/perron/development_feed_server.rb
124
126
  - lib/perron/engine.rb
125
127
  - lib/perron/errors.rb
126
128
  - lib/perron/feeds.rb
127
129
  - lib/perron/html_processor.rb
130
+ - lib/perron/html_processor/absolute_urls.rb
128
131
  - lib/perron/html_processor/base.rb
129
132
  - lib/perron/html_processor/lazy_load_images.rb
130
- - lib/perron/html_processor/syntax_highlight.rb
131
133
  - lib/perron/html_processor/target_blank.rb
134
+ - lib/perron/install.rb
135
+ - lib/perron/install/README.md.tt
136
+ - lib/perron/install/initializer.rb.tt
132
137
  - lib/perron/markdown.rb
133
138
  - lib/perron/metatags.rb
134
139
  - lib/perron/output_server.rb
135
140
  - lib/perron/refinements/delete_suffixes.rb
136
141
  - lib/perron/relation.rb
137
142
  - lib/perron/resource.rb
143
+ - lib/perron/resource/adjacency.rb
138
144
  - lib/perron/resource/associations.rb
139
145
  - lib/perron/resource/class_methods.rb
140
146
  - lib/perron/resource/configuration.rb
@@ -158,16 +164,23 @@ files:
158
164
  - lib/perron/site/builder/additional_routes.rb
159
165
  - lib/perron/site/builder/assets.rb
160
166
  - lib/perron/site/builder/feeds.rb
167
+ - lib/perron/site/builder/feeds/atom.erb
168
+ - lib/perron/site/builder/feeds/atom.rb
161
169
  - lib/perron/site/builder/feeds/author.rb
170
+ - lib/perron/site/builder/feeds/json.erb
162
171
  - lib/perron/site/builder/feeds/json.rb
172
+ - lib/perron/site/builder/feeds/rss.erb
163
173
  - lib/perron/site/builder/feeds/rss.rb
174
+ - lib/perron/site/builder/feeds/template.rb
164
175
  - lib/perron/site/builder/page.rb
165
176
  - lib/perron/site/builder/paths.rb
166
177
  - lib/perron/site/builder/public_files.rb
178
+ - lib/perron/site/builder/route_resources.rb
167
179
  - lib/perron/site/builder/sitemap.rb
168
180
  - lib/perron/site/validate.rb
169
181
  - lib/perron/tasks/build.rake
170
182
  - lib/perron/tasks/clobber.rake
183
+ - lib/perron/tasks/install.rake
171
184
  - lib/perron/tasks/sync_sources.rake
172
185
  - lib/perron/tasks/validate.rake
173
186
  - lib/perron/version.rb
@@ -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