Sha256: 215f985bd9db0f7dda07dc084e6edba6e02f0cbd39a204cb9459a6a40c3b3806

Contents?: true

Size: 1.62 KB

Versions: 1

Compression:

Stored size: 1.62 KB

Contents

module Odania
	module Config
		class Style
			attr_accessor :name, :entry_point, :direct, :dynamic, :assets

			def initialize(name)
				self.name = name
				reset
			end

			def plugins(type, key)
				@plugins[type][key]
			end

			def dump
				direct_data = {}
				direct.each_pair do |web_url, page|
					direct_data[web_url] = page.dump
				end

				dynamic_data = {}
				dynamic.each_pair do |web_url, page|
					dynamic_data[web_url] = page.dump
				end

				asset_data = {}
				assets.each_pair do |asset_url, page|
					asset_data[asset_url] = page.dump
				end

				{
					'entry_point' => entry_point,
					'direct' => direct_data,
					'dynamic' => dynamic_data,
					'assets' => asset_data
				}
			end

			def load(data, group_name)
				reset
				self.entry_point = data['entry_point'] unless data['entry_point'].nil?

				unless data['direct'].nil?
					data['direct'].each_pair do |name, data|
						self.direct[name].load(data, group_name)
					end
				end

				unless data['dynamic'].nil?
					data['dynamic'].each_pair do |name, data|
						self.dynamic[name].load(data, group_name)
					end
				end

				unless data['assets'].nil?
					data['assets'].each_pair do |name, data|
						self.assets[name].load(data, group_name)
					end
				end
			end

			private

			def reset
				self.entry_point = nil
				self.direct = Hash.new { |hash, key| hash[key] = Page.new }
				self.dynamic = Hash.new { |hash, key| hash[key] = Page.new }
				self.assets = Hash.new { |hash, key| hash[key] = Page.new }
				@plugins = {:direct => Hash.new { |hash, key| hash[key] = [] }, :dynamic => Hash.new { |hash, key| hash[key] = [] }}
			end
		end
	end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
odania-0.0.18 lib/odania/config/style.rb