Sha256: d6c01a4e22eb0c08cb941a6fee7a339d6f54fe53fe3d45b587b806ee27c254f3
Contents?: true
Size: 1.31 KB
Versions: 1
Compression:
Stored size: 1.31 KB
Contents
module Transcriber class Resource extend Builder extend Parser extend Response include Serialization cattr_accessor :id_key cattr_writer :resource_name def initialize(attrs = {}) attrs.map {|name, value| send("#{name}=", value)} end def self.keys @keys ||= [] end def self.relations @keys.find_all {|k| k.kind_of?(Relation)} end def self.resource_name(custom_name = nil) @resource_name ||= custom_name or to_s.demodulize.tableize end def resource_id __send__(id_key.name) end def resource(options = {}) root = options.fetch(:root, true) {}.tap do |resource| self.class.keys.inject(resource) {|buffer, key| buffer.merge!(key.to_resource(self))} resource.merge!({links: links}) if root and self.class.relations.any? end end def links self.class.relations.map {|key| key.to_relation(self)} end def self.transcribe(input, options = {}) normalize(parse(input, options), options) end def self.method_added(method_name) return unless not_allowed_names.include?(method_name.to_s) puts "warning: redefining '#{method_name}' may cause serious problems" end def self.not_allowed_names ["resource_id", "resource", "links"] end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
transcriber-0.0.3 | lib/transcriber/resource.rb |