Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- require 'dm-migrations'
- require 'migration_runner'
- module DataMapper
- module Types
- class TagCollection < DataMapper::Type
- primitive String
- def self.load(value, property)
- value.split(', ').to_a
- end
- def self.dump(value, property)
- result = typecast(value, property)
- result.nil? ? result : result.join(', ')
- end
- def self.typecast(value, property)
- case value
- when nil: nil
- when String; value.split(', ').to_a.uniq
- when Array ; value.uniq
- when Set ; value.to_a
- else ; raise ArgumentError.new \
- "+value+ must be nil String, Set or Array"
- end
- end
- end # class Tag
- end # module Types
- end # module DataMapper
- class Post
- property :categories, TagCollection
- property :tags , TagCollection
- def self.elements(type)
- elements = Set.new
- p all
- all.each {|r| p r;p r.tags;elements.merge(r.tags)}
- return elements.to_a
- end
- end
- include Sinatra::RenderingHelpers
- include Sinatra::Erb
- template :thing do
- <<-HAML
- <% for category in Post.elements(:tags) %>
- <li><%= category %></li>
- <% end %>
- HAML
- end
- Plugins::Views.menu ||= erb(:thing)
Add Comment
Please, Sign In to add comment