Sha256: 13efde0ab3a1480ec7da7b9880f59a25d47506476818dbfd816b3aceea396177

Contents?: true

Size: 1.21 KB

Versions: 3

Compression:

Stored size: 1.21 KB

Contents

module Cmsimple
    class Snippet
      extend ActiveModel::Naming
      attr_accessor :name, :options, :id

      def initialize(id, snippet_hash)
        @id = id

        @snippet_hash = snippet_hash.dup
        # @snippet_hash.symbolize_keys!

        @name = @snippet_hash[:name]

        # the options prefix is to handle legacy snippets mercury
        # changed how it serializes snippets
        @options = flatten_options(@snippet_hash[:options].presence || @snippet_hash)
      end

      def flatten_options(options)
        return {} unless options.present?
        options = options.dup
        if options.key?(:snippet)
          options.merge(options[:snippet])
        else
          options
        end
      end

      def method_missing method, *args, &block
        @options[method]
      end

      def matcher
        /\[#{self.id}(\/\d)?\]/
      end

      #
      # ActiveModel API
      #
      def persisted?
        false
      end

      def to_param
        nil
      end

      def to_key
        nil
      end

      def to_partial_path
        "cmsimple/snippets/#{name}/display"
      end

      def errors
        ActiveModel::Errors.new(self)
      end

      def valid?
        true
      end
    end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
cmsimple-0.2.3 app/models/cmsimple/snippet.rb
cmsimple-0.2.2 app/models/cmsimple/snippet.rb
cmsimple-0.2.0 app/models/cmsimple/snippet.rb