Sha256: 71cd336b17f6a8f7fb9c7ce028db4eb5b56baa2a43e49538774a2cd84b87a36f

Contents?: true

Size: 963 Bytes

Versions: 23

Compression:

Stored size: 963 Bytes

Contents

require 'miasma'

module Miasma
  module Types

    # Base data container
    class Data

      include Miasma::Utils::Lazy

      attribute :id, [String, Numeric]

      # Build new data instance
      #
      # @param args [Hash] attribute values
      # @return [self]
      def initialize(args={})
        load_data(args)
        valid_state
      end

      # Convert model to JSON string
      #
      # @return [String]
      def to_json(*_)
        MultiJson.dump(attributes)
      end

      # Load model using JSON string
      #
      # @param json [String]
      # @return [self]
      def from_json(json)
        load_data(
          MultiJson.load(json).to_smash
        ).valid_state
      end

      class << self

        # Build new instance from JSON string
        #
        # @param json [String]
        # @return [Data]
        def from_json(json)
          self.new(MultiJson.load(json).to_smash)
        end

      end

    end
  end
end

Version data entries

23 entries across 23 versions & 1 rubygems

Version Path
miasma-0.3.2 lib/miasma/types/data.rb
miasma-0.3.0 lib/miasma/types/data.rb
miasma-0.2.38 lib/miasma/types/data.rb
miasma-0.2.36 lib/miasma/types/data.rb
miasma-0.2.34 lib/miasma/types/data.rb
miasma-0.2.32 lib/miasma/types/data.rb
miasma-0.2.30 lib/miasma/types/data.rb
miasma-0.2.28 lib/miasma/types/data.rb
miasma-0.2.26 lib/miasma/types/data.rb
miasma-0.2.24 lib/miasma/types/data.rb
miasma-0.2.22 lib/miasma/types/data.rb
miasma-0.2.20 lib/miasma/types/data.rb
miasma-0.2.18 lib/miasma/types/data.rb
miasma-0.2.16 lib/miasma/types/data.rb
miasma-0.2.14 lib/miasma/types/data.rb
miasma-0.2.12 lib/miasma/types/data.rb
miasma-0.2.10 lib/miasma/types/data.rb
miasma-0.2.8 lib/miasma/types/data.rb
miasma-0.2.6 lib/miasma/types/data.rb
miasma-0.2.4 lib/miasma/types/data.rb