perron 0.9.1 → 0.11.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 (42) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -0
  3. data/Gemfile.lock +3 -1
  4. data/README.md +129 -36
  5. data/app/helpers/meta_tags_helper.rb +1 -1
  6. data/app/helpers/perron/erb_helper.rb +9 -0
  7. data/lib/generators/content/content_generator.rb +2 -0
  8. data/lib/generators/content/templates/root.erb.tt +0 -1
  9. data/lib/generators/perron/install_generator.rb +13 -0
  10. data/lib/generators/perron/templates/initializer.rb.tt +9 -6
  11. data/lib/perron/{site/collection.rb → collection.rb} +7 -1
  12. data/lib/perron/configuration.rb +10 -3
  13. data/lib/perron/data/proxy.rb +47 -0
  14. data/lib/perron/{site/data.rb → data.rb} +36 -16
  15. data/lib/perron/html_processor/syntax_highlight.rb +30 -0
  16. data/lib/perron/html_processor.rb +12 -8
  17. data/lib/perron/markdown.rb +6 -5
  18. data/lib/perron/metatags.rb +33 -59
  19. data/lib/perron/{site/resource → resource}/class_methods.rb +5 -1
  20. data/lib/perron/resource/metadata.rb +67 -0
  21. data/lib/perron/{site/resource → resource}/publishable.rb +5 -5
  22. data/lib/perron/{site/resource → resource}/related.rb +1 -1
  23. data/lib/perron/resource/renderer.rb +18 -0
  24. data/lib/perron/{site/resource → resource}/separator.rb +5 -5
  25. data/lib/perron/resource/slug.rb +27 -0
  26. data/lib/perron/resource.rb +90 -0
  27. data/lib/perron/root.rb +1 -1
  28. data/lib/perron/site/builder/assets.rb +2 -2
  29. data/lib/perron/site/builder/page.rb +1 -1
  30. data/lib/perron/site/builder/public_files.rb +1 -1
  31. data/lib/perron/site/builder.rb +2 -4
  32. data/lib/perron/site.rb +3 -14
  33. data/lib/perron/version.rb +1 -1
  34. data/lib/perron.rb +1 -0
  35. data/perron.gemspec +1 -1
  36. metadata +19 -15
  37. data/lib/perron/site/data/proxy.rb +0 -17
  38. data/lib/perron/site/resource/slug.rb +0 -20
  39. data/lib/perron/site/resource.rb +0 -68
  40. /data/lib/perron/{site/resource → resource}/configuration.rb +0 -0
  41. /data/lib/perron/{site/resource → resource}/core.rb +0 -0
  42. /data/lib/perron/{site/resource → resource}/related/stop_words.rb +0 -0
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.9.1
4
+ version: 0.11.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rails Designer Developers
@@ -80,6 +80,7 @@ files:
80
80
  - Rakefile
81
81
  - app/helpers/feeds_helper.rb
82
82
  - app/helpers/meta_tags_helper.rb
83
+ - app/helpers/perron/erb_helper.rb
83
84
  - app/helpers/perron/markdown_helper.rb
84
85
  - bin/console
85
86
  - bin/rails
@@ -95,17 +96,32 @@ files:
95
96
  - lib/generators/perron/templates/README.md.tt
96
97
  - lib/generators/perron/templates/initializer.rb.tt
97
98
  - lib/perron.rb
99
+ - lib/perron/collection.rb
98
100
  - lib/perron/configuration.rb
101
+ - lib/perron/data.rb
102
+ - lib/perron/data/proxy.rb
99
103
  - lib/perron/engine.rb
100
104
  - lib/perron/errors.rb
101
105
  - lib/perron/feeds.rb
102
106
  - lib/perron/html_processor.rb
103
107
  - lib/perron/html_processor/base.rb
104
108
  - lib/perron/html_processor/lazy_load_images.rb
109
+ - lib/perron/html_processor/syntax_highlight.rb
105
110
  - lib/perron/html_processor/target_blank.rb
106
111
  - lib/perron/markdown.rb
107
112
  - lib/perron/metatags.rb
108
113
  - lib/perron/refinements/delete_suffixes.rb
114
+ - lib/perron/resource.rb
115
+ - lib/perron/resource/class_methods.rb
116
+ - lib/perron/resource/configuration.rb
117
+ - lib/perron/resource/core.rb
118
+ - lib/perron/resource/metadata.rb
119
+ - lib/perron/resource/publishable.rb
120
+ - lib/perron/resource/related.rb
121
+ - lib/perron/resource/related/stop_words.rb
122
+ - lib/perron/resource/renderer.rb
123
+ - lib/perron/resource/separator.rb
124
+ - lib/perron/resource/slug.rb
109
125
  - lib/perron/root.rb
110
126
  - lib/perron/site.rb
111
127
  - lib/perron/site/builder.rb
@@ -117,26 +133,14 @@ files:
117
133
  - lib/perron/site/builder/paths.rb
118
134
  - lib/perron/site/builder/public_files.rb
119
135
  - lib/perron/site/builder/sitemap.rb
120
- - lib/perron/site/collection.rb
121
- - lib/perron/site/data.rb
122
- - lib/perron/site/data/proxy.rb
123
- - lib/perron/site/resource.rb
124
- - lib/perron/site/resource/class_methods.rb
125
- - lib/perron/site/resource/configuration.rb
126
- - lib/perron/site/resource/core.rb
127
- - lib/perron/site/resource/publishable.rb
128
- - lib/perron/site/resource/related.rb
129
- - lib/perron/site/resource/related/stop_words.rb
130
- - lib/perron/site/resource/separator.rb
131
- - lib/perron/site/resource/slug.rb
132
136
  - lib/perron/tasks/perron.rake
133
137
  - lib/perron/version.rb
134
138
  - perron.gemspec
135
- homepage: https://railsdesigner.com/perron/
139
+ homepage: https://perron.railsdesigner.com/
136
140
  licenses:
137
141
  - MIT
138
142
  metadata:
139
- homepage_uri: https://railsdesigner.com/perron/
143
+ homepage_uri: https://perron.railsdesigner.com/
140
144
  source_code_uri: https://github.com/Rails-Designer/perron/
141
145
  rdoc_options: []
142
146
  require_paths:
@@ -1,17 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Perron
4
- class Data
5
- class Proxy
6
- def method_missing(method_name, *arguments, &block)
7
- raise ArgumentError, "Data `#{method_name}` does not accept arguments" if arguments.any?
8
-
9
- Perron::Data.new(method_name.to_s)
10
- end
11
-
12
- def respond_to_missing?(method_name, include_private = false)
13
- true
14
- end
15
- end
16
- end
17
- end
@@ -1,20 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "perron/refinements/delete_suffixes"
4
-
5
- module Perron
6
- class Resource
7
- class Slug
8
- using Perron::SuffixStripping
9
-
10
- def initialize(resource)
11
- @resource = resource
12
- @metadata = resource.metadata
13
- end
14
-
15
- def create
16
- @metadata.slug.presence || @resource.filename.sub(/^[\d-]+-/, "").delete_suffixes(Perron.configuration.allowed_extensions)
17
- end
18
- end
19
- end
20
- end
@@ -1,68 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "perron/site/resource/configuration"
4
- require "perron/site/resource/core"
5
- require "perron/site/resource/class_methods"
6
- require "perron/site/resource/publishable"
7
- require "perron/site/resource/related"
8
- require "perron/site/resource/slug"
9
- require "perron/site/resource/separator"
10
-
11
- module Perron
12
- class Resource
13
- ID_LENGTH = 8
14
-
15
- include Perron::Resource::Configuration
16
- include Perron::Resource::Core
17
- include Perron::Resource::ClassMethods
18
- include Perron::Resource::Publishable
19
-
20
- attr_reader :file_path, :id
21
-
22
- def initialize(file_path)
23
- @file_path = file_path
24
- @id = generate_id
25
-
26
- raise Errors::FileNotFoundError, "No such file: #{file_path}" unless File.exist?(file_path)
27
- end
28
-
29
- def filename = File.basename(@file_path)
30
-
31
- def slug = Perron::Resource::Slug.new(self).create
32
- alias_method :path, :slug
33
- alias_method :to_param, :slug
34
-
35
- def content
36
- return Perron::Resource::Separator.new(raw_content).content unless processable?
37
-
38
- ::ApplicationController
39
- .renderer
40
- .render(
41
- inline: Perron::Resource::Separator.new(raw_content).content,
42
- assigns: {resource: self}
43
- )
44
- end
45
-
46
- def metadata = Perron::Resource::Separator.new(raw_content).metadata
47
-
48
- def raw_content = File.read(@file_path)
49
- alias_method :raw, :raw_content
50
-
51
- def collection = Collection.new(self.class.model_name.collection)
52
-
53
- def related_resources(limit: 5) = Perron::Site::Resource::Related.new(self).find(limit:)
54
- alias_method :related, :related_resources
55
-
56
- private
57
-
58
- def processable?
59
- @file_path.ends_with?(".erb") || metadata.erb == true
60
- end
61
-
62
- def generate_id
63
- Digest::SHA1.hexdigest(
64
- @file_path.delete_prefix(Perron.configuration.input.to_s).parameterize
65
- ).first(ID_LENGTH)
66
- end
67
- end
68
- end
File without changes