#!/usr/bin/env ruby require 'singleton' require 'yaml' require 'pp' module Kook class Config include Singleton def create_project project_name raise "ExistingProject" if @projects.has_key? project_name @projects[project_name] = Project.new project_name end def create_view project_name, view_name Project.validate_name project_name View.validate_name view_name raise "MissingProject" if not @projects.has_key? project_name view = View.new view_name @projects[project_name].add_view view end def to_yaml return { global: {}, projects: @projects.values.map{ |p| p.to_hash } }.to_yaml end private def initialize @projects = {} super end end end class Test def self.test_project_create config = Kook::Config.instance config.create_project 'proj' end def self.test_view_create config = Kook::Config.instance config.create_view 'proj', 'proj-root' config.create_view 'proj', 'proj-base' config.create_view 'proj', 'proj-3' puts config.to_yaml end end Test.test_project_create Test.test_view_create