module Embeddable::ClassMethods
Attributes
embeddables[R]
Public Instance Methods
embeddable(name, options = {})
click to toggle source
# File lib/embeddable.rb, line 41 def embeddable(name, options = {}) source = options.fetch :from define_method "#{name}_type" do url = send(source) return if url.blank? SERVICES.map do |service, patterns| service if patterns.any? { |pattern| url[pattern] } end.compact.first end define_method "#{name}_id" do url = send(source) return if url.blank? SERVICES.map do |service, patterns| patterns.map { |pattern| url[pattern, 1] } end.flatten.compact.first end define_method "#{name}?" do send("#{name}_id") ? true : false end SERVICES.each do |service, pattern| define_method "#{name}_on_#{service}?" do send("#{name}_type") == service end end define_method "#{name}_source" do source end @embeddables << name end