jekyll-uj-powertools 1.5.1 → 1.5.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4e13016489f0630f73c9327a5f2d57732de7fa71aeaf2b62b3a5a74064f09b9e
4
- data.tar.gz: 137eb99273904dd784739aa126b46ac3d9aa475f5fc874c332be4fe46169e42b
3
+ metadata.gz: 4c546d3b5f77c67bf33fdcdbecfeb0c741760a89fdcf508f05caf7943b19b197
4
+ data.tar.gz: 2612f6dae15afb265e3193bccdaf038421eb1ad51e3bdd955c0ce610b324e441
5
5
  SHA512:
6
- metadata.gz: 0516d15e7915a3f9f67f869405244ca59d0032f058fc22e9e63f1b7f9cc7e6466988b327b8bcc254a5f45f9c7787af931f5d5f41df4b232c668e6fadf9ff0ea2
7
- data.tar.gz: 66def45c09200d5791aec723cfa0f4a30d49c42de7c1a8a1dd40002412b4ce6a11bd0c7c7b68be5d87d4d813f0880d02514382bc06f70b041e0445ebb4cbebd9
6
+ metadata.gz: e95b14dd432df58e934bb9cab3c77eb8bb577cc6e917475692753ec95b9d78ed8759e4310c6560fa6bb5da350519eb3e3fe97fc3278c78c2b345e021a53fc256
7
+ data.tar.gz: 54646abcd5832dabb835cdfff9dfb71d80aebe28df1727381497beb7af057ef594a05231cc9327ddf87f74484c1c6035d440a394b5fd97568943e641999f9af8
data/README.md CHANGED
@@ -133,16 +133,23 @@ After checking out the repo, run `bin/setup` to install dependencies. You can al
133
133
 
134
134
  To install this gem onto your local machine, run `bundle exec rake install`.
135
135
 
136
- To release a new version, update the version number in the `.gemspec` and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and the created tag, and push the `.gem` file to [rubygems.org](https://rubygems.org).
136
+
137
+
137
138
 
138
139
  ## ⚠️ Testing
139
140
  Run the tests
140
141
  ```shell
141
- bundle install
142
- bundle exec rspec
142
+ bundle install && bundle exec rspec
143
+ ```
144
+
145
+ Test in your [Ultimate Jekyll Site](http://github.com/itw-creative-works/ultimate-jekyll)
146
+ ```shell
147
+ npm start -- --ujPluginDevMode=true
143
148
  ```
144
149
 
145
150
  ## 💎 Build + Publish the Gem
151
+ To release a new version, update the version number in the `.gemspec` and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and the created tag, and push the `.gem` file to [rubygems.org](https://rubygems.org).
152
+
146
153
  ```shell
147
154
  # Release
148
155
  bundle exec rake release
@@ -5,7 +5,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
5
  Gem::Specification.new do |spec|
6
6
  # Gem info
7
7
  spec.name = "jekyll-uj-powertools"
8
- spec.version = "1.5.1"
8
+ spec.version = "1.5.2"
9
9
 
10
10
  # Author info
11
11
  spec.authors = ["ITW Creative Works"]
@@ -72,6 +72,39 @@ module Jekyll
72
72
  ]
73
73
  end
74
74
 
75
+ def get_layout_chain(layout_name, site)
76
+ chain = []
77
+ current_layout_name = layout_name
78
+
79
+ # Traverse up the layout hierarchy
80
+ while current_layout_name
81
+ layout = site.layouts[current_layout_name]
82
+ break unless layout
83
+
84
+ chain.unshift(layout) # Add to beginning to maintain parent->child order
85
+ current_layout_name = layout.data['layout']
86
+ end
87
+
88
+ chain
89
+ end
90
+
91
+ def filter_front_matter(data)
92
+ # Jekyll internal properties that shouldn't be in resolved data
93
+ jekyll_internals = [
94
+ 'layout', 'permalink', 'published', 'date', 'categories', 'tags',
95
+ 'path', 'relative_path', 'collection', 'type', 'id', 'url',
96
+ 'next', 'previous', 'draft', 'ext', 'excerpt', 'output'
97
+ ]
98
+
99
+ filtered = {}
100
+ data.each do |key, value|
101
+ next if jekyll_internals.include?(key)
102
+ filtered[key] = value
103
+ end
104
+
105
+ filtered
106
+ end
107
+
75
108
  def inject_data(item, site)
76
109
  # Inject a random number into the item's data
77
110
  item.data['random_id'] = rand(100) # Random number between 0 and 99
@@ -82,8 +115,8 @@ module Jekyll
82
115
  end
83
116
 
84
117
  # Set resolved data for site, layout, and page
85
- # Create a deep merge of site -> layout -> page data
86
- # Priority: page (highest) -> layout -> site (lowest)
118
+ # Create a deep merge of site -> child layouts -> parent layouts -> page data
119
+ # Priority: page (highest) -> parent layouts -> child layouts -> site (lowest)
87
120
  resolved = {}
88
121
 
89
122
  # Start with site data
@@ -93,19 +126,31 @@ module Jekyll
93
126
  resolved = deep_merge(resolved, filtered_config)
94
127
  end
95
128
 
96
- # Merge layout data if available
129
+ # Merge layout data if available (traverse the entire layout chain)
97
130
  if item.data['layout']
98
- layout_name = item.data['layout']
99
- layout = site.layouts[layout_name]
100
- if layout && layout.data
101
- resolved = deep_merge(resolved, layout.data)
102
- # Also add layout_data for backward compatibility
103
- item.data['layout_data'] = layout.data
131
+ layout_chain = get_layout_chain(item.data['layout'], site)
132
+
133
+ # Merge each layout in reverse order (child to parent)
134
+ # This gives parent layouts (base layouts) higher priority
135
+ layout_chain.reverse.each do |layout|
136
+ if layout && layout.data
137
+ # Filter out Jekyll internal layout properties
138
+ layout_data = filter_front_matter(layout.data)
139
+ resolved = deep_merge(resolved, layout_data)
140
+ end
141
+ end
142
+
143
+ # Also add layout_data for backward compatibility (immediate layout only)
144
+ immediate_layout = site.layouts[item.data['layout']]
145
+ if immediate_layout && immediate_layout.data
146
+ item.data['layout_data'] = immediate_layout.data
104
147
  end
105
148
  end
106
149
 
107
150
  # Finally merge page data (highest priority)
108
- resolved = deep_merge(resolved, item.data)
151
+ # Filter out Jekyll internal properties
152
+ page_data = filter_front_matter(item.data)
153
+ resolved = deep_merge(resolved, page_data)
109
154
 
110
155
  # Add the resolved data to the item
111
156
  item.data['resolved'] = resolved
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll-uj-powertools
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.1
4
+ version: 1.5.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - ITW Creative Works