Module: Jekyll::ServerSideRedirects::Firebase
- Defined in:
- lib/jekyll-server-side-redirects/servers/firebase.rb
Class Method Summary collapse
- .generate_firebase_json(redirects_data) ⇒ Object
- .generate_redirects(site) ⇒ Object
- .process_redirects(data) ⇒ Object
Class Method Details
.generate_firebase_json(redirects_data) ⇒ Object
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/jekyll-server-side-redirects/servers/firebase.rb', line 14 def self.generate_firebase_json(redirects_data) file_path = "firebase.json" firebase_content = {} if File.exist?(file_path) file_content = File.read(file_path) firebase_content = JSON.parse(file_content) else firebase_content["hosting"] = { "redirects" => [] } end valid_keys = ['source', 'destination', 'type'] existing_redirects = firebase_content["hosting"]["redirects"].map do |redirect| redirect.select { |key, _| valid_keys.include?(key) } end firebase_content["hosting"]["redirects"] = (existing_redirects + redirects_data).uniq { |r| r["source"] } File.open(file_path, "w") do |file| file.write(JSON.pretty_generate(firebase_content)) end end |
.generate_redirects(site) ⇒ Object
4 5 6 7 8 9 10 11 12 |
# File 'lib/jekyll-server-side-redirects/servers/firebase.rb', line 4 def self.generate_redirects(site) redirects_data = [] redirects_data += process_redirects(site.pages) redirects_data += process_redirects(site.posts.docs) generate_firebase_json(redirects_data) redirects_data end |
.process_redirects(data) ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/jekyll-server-side-redirects/servers/firebase.rb', line 37 def self.process_redirects(data) redirects = [] data.each do |item| next unless item.data['redirect_from'] redirect_from = item.data['redirect_from'] redirect_from = [redirect_from] unless redirect_from.is_a?(Array) redirect_from.each do |source| redirects << { 'source' => source, 'destination' => item.permalink, 'type' => item.data['redirect_type'] || 301 } end end redirects end |