Sha256: e18592955140fe88972e4d1966c99ee481fcefa880be61f7c0afeaa3c85ec9e7

Contents?: true

Size: 972 Bytes

Versions: 11

Compression:

Stored size: 972 Bytes

Contents

# Take a YAML data structure and express it in a 'class.attribute.attribute' convention so
#   it can be passed to the build command, used in the source files to call data
#   from the book.yml file
#
# # book.yml
# foo:
#   bar: foobar
#
# is referenced in the source files as <%= book.foo.bar %> and yields in build 'foobar'
module Bookshop
  module Commands
    class Book

      def initialize(data={})
        @data = {}
        update!(data)
      end

      def update!(data)
        data.each do |key, value|
          self[key] = value
        end
      end

      def [](key)
        @data[key.to_sym]
      end

      def []=(key, value)
        if value.class == Hash
          @data[key.to_sym] = Book.new(value)
        else
          @data[key.to_sym] = value
        end
      end

      def method_missing(sym, *args)
        if sym.to_s =~ /(.+)=$/
          self[$1] = args.first
        else
          self[sym]
        end
      end

    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
bookshop-0.1.8 lib/bookshop/commands/yaml/book.rb
bookshop-0.1.7 lib/bookshop/commands/yaml/book.rb
bookshop-0.1.6 lib/bookshop/commands/yaml/book.rb
bookshop-0.1.5 lib/bookshop/commands/yaml/book.rb
bookshop-0.1.4 lib/bookshop/commands/yaml/book.rb
bookshop-0.1.3 lib/bookshop/commands/yaml/book.rb
bookshop-0.1.2 lib/bookshop/commands/yaml/book.rb
bookshop-0.1.1 lib/bookshop/commands/yaml/book.rb
bookshop-0.1.0 lib/bookshop/commands/yaml/book.rb
bookshop-0.0.22 lib/bookshop/commands/yaml/book.rb
bookshop-0.0.21 lib/bookshop/commands/yaml/book.rb