dm-types 0.9.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/LICENSE +20 -0
 - data/README +4 -0
 - data/Rakefile +65 -0
 - data/TODO +8 -0
 - data/lib/dm-types.rb +18 -0
 - data/lib/dm-types/csv.rb +28 -0
 - data/lib/dm-types/enum.rb +40 -0
 - data/lib/dm-types/epoch_time.rb +27 -0
 - data/lib/dm-types/file_path.rb +22 -0
 - data/lib/dm-types/flag.rb +51 -0
 - data/lib/dm-types/ip_address.rb +26 -0
 - data/lib/dm-types/json.rb +31 -0
 - data/lib/dm-types/serial.rb +8 -0
 - data/lib/dm-types/uri.rb +19 -0
 - data/lib/dm-types/yaml.rb +31 -0
 - data/spec/integration/enum_spec.rb +24 -0
 - data/spec/integration/flag_spec.rb +29 -0
 - data/spec/spec.opts +2 -0
 - data/spec/spec_helper.rb +27 -0
 - data/spec/unit/enum_spec.rb +66 -0
 - data/spec/unit/epoch_time_spec.rb +37 -0
 - data/spec/unit/file_path_spec.rb +38 -0
 - data/spec/unit/flag_spec.rb +86 -0
 - data/spec/unit/ip_address_spec.rb +39 -0
 - data/spec/unit/uri_spec.rb +38 -0
 - metadata +87 -0
 
    
        data/LICENSE
    ADDED
    
    | 
         @@ -0,0 +1,20 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            Copyright (c) 2007 Sam Smoot
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            Permission is hereby granted, free of charge, to any person obtaining
         
     | 
| 
      
 4 
     | 
    
         
            +
            a copy of this software and associated documentation files (the
         
     | 
| 
      
 5 
     | 
    
         
            +
            "Software"), to deal in the Software without restriction, including
         
     | 
| 
      
 6 
     | 
    
         
            +
            without limitation the rights to use, copy, modify, merge, publish,
         
     | 
| 
      
 7 
     | 
    
         
            +
            distribute, sublicense, and/or sell copies of the Software, and to
         
     | 
| 
      
 8 
     | 
    
         
            +
            permit persons to whom the Software is furnished to do so, subject to
         
     | 
| 
      
 9 
     | 
    
         
            +
            the following conditions:
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
            The above copyright notice and this permission notice shall be
         
     | 
| 
      
 12 
     | 
    
         
            +
            included in all copies or substantial portions of the Software.
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
         
     | 
| 
      
 15 
     | 
    
         
            +
            EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
         
     | 
| 
      
 16 
     | 
    
         
            +
            MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
         
     | 
| 
      
 17 
     | 
    
         
            +
            NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
         
     | 
| 
      
 18 
     | 
    
         
            +
            LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
         
     | 
| 
      
 19 
     | 
    
         
            +
            OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
         
     | 
| 
      
 20 
     | 
    
         
            +
            WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
         
     | 
    
        data/README
    ADDED
    
    
    
        data/Rakefile
    ADDED
    
    | 
         @@ -0,0 +1,65 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'rubygems'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'spec'
         
     | 
| 
      
 3 
     | 
    
         
            +
            require 'rake/clean'
         
     | 
| 
      
 4 
     | 
    
         
            +
            require 'rake/gempackagetask'
         
     | 
| 
      
 5 
     | 
    
         
            +
            require 'spec/rake/spectask'
         
     | 
| 
      
 6 
     | 
    
         
            +
            require 'pathname'
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            CLEAN.include '{log,pkg}/'
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            spec = Gem::Specification.new do |s|
         
     | 
| 
      
 11 
     | 
    
         
            +
              s.name             = 'dm-types'
         
     | 
| 
      
 12 
     | 
    
         
            +
              s.version          = '0.9.2'
         
     | 
| 
      
 13 
     | 
    
         
            +
              s.platform         = Gem::Platform::RUBY
         
     | 
| 
      
 14 
     | 
    
         
            +
              s.has_rdoc         = true
         
     | 
| 
      
 15 
     | 
    
         
            +
              s.extra_rdoc_files = %w[ README LICENSE TODO ]
         
     | 
| 
      
 16 
     | 
    
         
            +
              s.summary          = 'DataMapper plugin providing extra data types'
         
     | 
| 
      
 17 
     | 
    
         
            +
              s.description      = s.summary
         
     | 
| 
      
 18 
     | 
    
         
            +
              s.author           = 'Sam Smoot'
         
     | 
| 
      
 19 
     | 
    
         
            +
              s.email            = 'ssmoot@gmail.com'
         
     | 
| 
      
 20 
     | 
    
         
            +
              s.homepage         = 'http://github.com/sam/dm-more/tree/master/dm-types'
         
     | 
| 
      
 21 
     | 
    
         
            +
              s.require_path     = 'lib'
         
     | 
| 
      
 22 
     | 
    
         
            +
              s.files            = FileList[ '{lib,spec}/**/*.rb', 'spec/spec.opts', 'Rakefile', *s.extra_rdoc_files ]
         
     | 
| 
      
 23 
     | 
    
         
            +
              s.add_dependency('dm-core', "=#{s.version}")
         
     | 
| 
      
 24 
     | 
    
         
            +
            end
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
            task :default => [ :spec ]
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
            WIN32 = (RUBY_PLATFORM =~ /win32|mingw|cygwin/) rescue nil
         
     | 
| 
      
 29 
     | 
    
         
            +
            SUDO  = WIN32 ? '' : ('sudo' unless ENV['SUDOLESS'])
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
            Rake::GemPackageTask.new(spec) do |pkg|
         
     | 
| 
      
 32 
     | 
    
         
            +
              pkg.gem_spec = spec
         
     | 
| 
      
 33 
     | 
    
         
            +
            end
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
            desc "Install #{spec.name} #{spec.version} (default ruby)"
         
     | 
| 
      
 36 
     | 
    
         
            +
            task :install => [ :package ] do
         
     | 
| 
      
 37 
     | 
    
         
            +
              sh "#{SUDO} gem install --local pkg/#{spec.name}-#{spec.version} --no-update-sources", :verbose => false
         
     | 
| 
      
 38 
     | 
    
         
            +
            end
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
            desc "Uninstall #{spec.name} #{spec.version} (default ruby)"
         
     | 
| 
      
 41 
     | 
    
         
            +
            task :uninstall => [ :clobber ] do
         
     | 
| 
      
 42 
     | 
    
         
            +
              sh "#{SUDO} gem uninstall #{spec.name} -v#{spec.version} -I -x", :verbose => false
         
     | 
| 
      
 43 
     | 
    
         
            +
            end
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
            namespace :jruby do
         
     | 
| 
      
 46 
     | 
    
         
            +
              desc "Install #{spec.name} #{spec.version} with JRuby"
         
     | 
| 
      
 47 
     | 
    
         
            +
              task :install => [ :package ] do
         
     | 
| 
      
 48 
     | 
    
         
            +
                sh %{#{SUDO} jruby -S gem install --local pkg/#{spec.name}-#{spec.version} --no-update-sources}, :verbose => false
         
     | 
| 
      
 49 
     | 
    
         
            +
              end
         
     | 
| 
      
 50 
     | 
    
         
            +
            end
         
     | 
| 
      
 51 
     | 
    
         
            +
             
     | 
| 
      
 52 
     | 
    
         
            +
            desc 'Run specifications'
         
     | 
| 
      
 53 
     | 
    
         
            +
            Spec::Rake::SpecTask.new(:spec) do |t|
         
     | 
| 
      
 54 
     | 
    
         
            +
              t.spec_opts << '--options' << 'spec/spec.opts' if File.exists?('spec/spec.opts')
         
     | 
| 
      
 55 
     | 
    
         
            +
              t.spec_files = Pathname.glob(Pathname.new(__FILE__).dirname + 'spec/**/*_spec.rb')
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
      
 57 
     | 
    
         
            +
              begin
         
     | 
| 
      
 58 
     | 
    
         
            +
                t.rcov = ENV.has_key?('NO_RCOV') ? ENV['NO_RCOV'] != 'true' : true
         
     | 
| 
      
 59 
     | 
    
         
            +
                t.rcov_opts << '--exclude' << 'spec'
         
     | 
| 
      
 60 
     | 
    
         
            +
                t.rcov_opts << '--text-summary'
         
     | 
| 
      
 61 
     | 
    
         
            +
                t.rcov_opts << '--sort' << 'coverage' << '--sort-reverse'
         
     | 
| 
      
 62 
     | 
    
         
            +
              rescue Exception
         
     | 
| 
      
 63 
     | 
    
         
            +
                # rcov not installed
         
     | 
| 
      
 64 
     | 
    
         
            +
              end
         
     | 
| 
      
 65 
     | 
    
         
            +
            end
         
     | 
    
        data/TODO
    ADDED
    
    
    
        data/lib/dm-types.rb
    ADDED
    
    | 
         @@ -0,0 +1,18 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'rubygems'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'pathname'
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            gem 'dm-core', '=0.9.2'
         
     | 
| 
      
 5 
     | 
    
         
            +
            require 'dm-core'
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            dir = Pathname(__FILE__).dirname.expand_path / 'dm-types'
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            require dir / 'csv'
         
     | 
| 
      
 10 
     | 
    
         
            +
            require dir / 'enum'
         
     | 
| 
      
 11 
     | 
    
         
            +
            require dir / 'epoch_time'
         
     | 
| 
      
 12 
     | 
    
         
            +
            require dir / 'file_path'
         
     | 
| 
      
 13 
     | 
    
         
            +
            require dir / 'flag'
         
     | 
| 
      
 14 
     | 
    
         
            +
            require dir / 'ip_address'
         
     | 
| 
      
 15 
     | 
    
         
            +
            require dir / "json"""
         
     | 
| 
      
 16 
     | 
    
         
            +
            require dir / 'uri'
         
     | 
| 
      
 17 
     | 
    
         
            +
            require dir / 'yaml'
         
     | 
| 
      
 18 
     | 
    
         
            +
            require dir / 'serial'
         
     | 
    
        data/lib/dm-types/csv.rb
    ADDED
    
    | 
         @@ -0,0 +1,28 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module DataMapper
         
     | 
| 
      
 2 
     | 
    
         
            +
              module Types
         
     | 
| 
      
 3 
     | 
    
         
            +
                class Csv < DataMapper::Type
         
     | 
| 
      
 4 
     | 
    
         
            +
                  primitive String
         
     | 
| 
      
 5 
     | 
    
         
            +
                  size 65535
         
     | 
| 
      
 6 
     | 
    
         
            +
                  lazy true
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
                  def self.load(value, property)
         
     | 
| 
      
 9 
     | 
    
         
            +
                    case value
         
     | 
| 
      
 10 
     | 
    
         
            +
                    when String then FasterCSV.parse(value)
         
     | 
| 
      
 11 
     | 
    
         
            +
                    when Array then value
         
     | 
| 
      
 12 
     | 
    
         
            +
                    else nil
         
     | 
| 
      
 13 
     | 
    
         
            +
                    end
         
     | 
| 
      
 14 
     | 
    
         
            +
                  end
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
                  def self.dump(value, property)
         
     | 
| 
      
 17 
     | 
    
         
            +
                    case value
         
     | 
| 
      
 18 
     | 
    
         
            +
                    when Array then
         
     | 
| 
      
 19 
     | 
    
         
            +
                      FasterCSV.generate do |csv|
         
     | 
| 
      
 20 
     | 
    
         
            +
                        value.each { |row| csv << row }
         
     | 
| 
      
 21 
     | 
    
         
            +
                      end
         
     | 
| 
      
 22 
     | 
    
         
            +
                    when String then value
         
     | 
| 
      
 23 
     | 
    
         
            +
                    else nil
         
     | 
| 
      
 24 
     | 
    
         
            +
                    end
         
     | 
| 
      
 25 
     | 
    
         
            +
                  end
         
     | 
| 
      
 26 
     | 
    
         
            +
                end # class Csv
         
     | 
| 
      
 27 
     | 
    
         
            +
              end # module Types
         
     | 
| 
      
 28 
     | 
    
         
            +
            end # module DataMapper
         
     | 
| 
         @@ -0,0 +1,40 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module DataMapper
         
     | 
| 
      
 2 
     | 
    
         
            +
              module Types
         
     | 
| 
      
 3 
     | 
    
         
            +
                class Enum < DataMapper::Type(Integer)
         
     | 
| 
      
 4 
     | 
    
         
            +
                  def self.inherited(target)
         
     | 
| 
      
 5 
     | 
    
         
            +
                    target.instance_variable_set("@primitive", self.primitive)
         
     | 
| 
      
 6 
     | 
    
         
            +
                  end
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
                  def self.flag_map
         
     | 
| 
      
 9 
     | 
    
         
            +
                    @flag_map
         
     | 
| 
      
 10 
     | 
    
         
            +
                  end
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
                  def self.flag_map=(value)
         
     | 
| 
      
 13 
     | 
    
         
            +
                    @flag_map = value
         
     | 
| 
      
 14 
     | 
    
         
            +
                  end
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
                  def self.new(*flags)
         
     | 
| 
      
 17 
     | 
    
         
            +
                    enum = Class.new(Enum)
         
     | 
| 
      
 18 
     | 
    
         
            +
                    enum.flag_map = {}
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
                    flags.each_with_index do |flag, i|
         
     | 
| 
      
 21 
     | 
    
         
            +
                      enum.flag_map[i + 1] = flag
         
     | 
| 
      
 22 
     | 
    
         
            +
                    end
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
                    enum
         
     | 
| 
      
 25 
     | 
    
         
            +
                  end
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
                  def self.[](*flags)
         
     | 
| 
      
 28 
     | 
    
         
            +
                    new(*flags)
         
     | 
| 
      
 29 
     | 
    
         
            +
                  end
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
                  def self.load(value, property)
         
     | 
| 
      
 32 
     | 
    
         
            +
                    self.flag_map[value]
         
     | 
| 
      
 33 
     | 
    
         
            +
                  end
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
                  def self.dump(value, property)
         
     | 
| 
      
 36 
     | 
    
         
            +
                    self.flag_map.invert[value]
         
     | 
| 
      
 37 
     | 
    
         
            +
                  end
         
     | 
| 
      
 38 
     | 
    
         
            +
                end # class Enum
         
     | 
| 
      
 39 
     | 
    
         
            +
              end # module Types
         
     | 
| 
      
 40 
     | 
    
         
            +
            end # module DataMapper
         
     | 
| 
         @@ -0,0 +1,27 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module DataMapper
         
     | 
| 
      
 2 
     | 
    
         
            +
              module Types
         
     | 
| 
      
 3 
     | 
    
         
            +
                class EpochTime < DataMapper::Type
         
     | 
| 
      
 4 
     | 
    
         
            +
                  primitive Integer
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
                  def self.load(value, property)
         
     | 
| 
      
 7 
     | 
    
         
            +
                    case value
         
     | 
| 
      
 8 
     | 
    
         
            +
                    when Integer
         
     | 
| 
      
 9 
     | 
    
         
            +
                      Time.at(value)
         
     | 
| 
      
 10 
     | 
    
         
            +
                    else
         
     | 
| 
      
 11 
     | 
    
         
            +
                      value
         
     | 
| 
      
 12 
     | 
    
         
            +
                    end
         
     | 
| 
      
 13 
     | 
    
         
            +
                  end
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                  def self.dump(value, property)
         
     | 
| 
      
 16 
     | 
    
         
            +
                    case value
         
     | 
| 
      
 17 
     | 
    
         
            +
                    when Integer
         
     | 
| 
      
 18 
     | 
    
         
            +
                      value
         
     | 
| 
      
 19 
     | 
    
         
            +
                    when Time
         
     | 
| 
      
 20 
     | 
    
         
            +
                      value.to_i
         
     | 
| 
      
 21 
     | 
    
         
            +
                    when DateTime
         
     | 
| 
      
 22 
     | 
    
         
            +
                      Time.parse(value.to_s).to_i
         
     | 
| 
      
 23 
     | 
    
         
            +
                    end
         
     | 
| 
      
 24 
     | 
    
         
            +
                  end
         
     | 
| 
      
 25 
     | 
    
         
            +
                end # class EpochTime
         
     | 
| 
      
 26 
     | 
    
         
            +
              end # module Types
         
     | 
| 
      
 27 
     | 
    
         
            +
            end # module DataMapper
         
     | 
| 
         @@ -0,0 +1,22 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'pathname'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            module DataMapper
         
     | 
| 
      
 4 
     | 
    
         
            +
              module Types
         
     | 
| 
      
 5 
     | 
    
         
            +
                class FilePath < DataMapper::Type
         
     | 
| 
      
 6 
     | 
    
         
            +
                  primitive String
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
                  def self.load(value, property)
         
     | 
| 
      
 9 
     | 
    
         
            +
                    if value.nil?
         
     | 
| 
      
 10 
     | 
    
         
            +
                      nil
         
     | 
| 
      
 11 
     | 
    
         
            +
                    else
         
     | 
| 
      
 12 
     | 
    
         
            +
                      Pathname.new(value)
         
     | 
| 
      
 13 
     | 
    
         
            +
                    end
         
     | 
| 
      
 14 
     | 
    
         
            +
                  end
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
                  def self.dump(value, property)
         
     | 
| 
      
 17 
     | 
    
         
            +
                    return nil if value.nil?
         
     | 
| 
      
 18 
     | 
    
         
            +
                    value.to_s
         
     | 
| 
      
 19 
     | 
    
         
            +
                  end
         
     | 
| 
      
 20 
     | 
    
         
            +
                end # class FilePath
         
     | 
| 
      
 21 
     | 
    
         
            +
              end # module Types
         
     | 
| 
      
 22 
     | 
    
         
            +
            end # module DataMapper
         
     | 
| 
         @@ -0,0 +1,51 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module DataMapper
         
     | 
| 
      
 2 
     | 
    
         
            +
              module Types
         
     | 
| 
      
 3 
     | 
    
         
            +
                class Flag < DataMapper::Type(Integer)
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
                  def self.flag_map
         
     | 
| 
      
 6 
     | 
    
         
            +
                    @flag_map
         
     | 
| 
      
 7 
     | 
    
         
            +
                  end
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
                  def self.flag_map=(value)
         
     | 
| 
      
 10 
     | 
    
         
            +
                    @flag_map = value
         
     | 
| 
      
 11 
     | 
    
         
            +
                  end
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
                  def self.new(*flags)
         
     | 
| 
      
 14 
     | 
    
         
            +
                    type = Flag.clone  # cannot dup a Class
         
     | 
| 
      
 15 
     | 
    
         
            +
                    type.flag_map = {}
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
                    flags.each_with_index do |flag, i|
         
     | 
| 
      
 18 
     | 
    
         
            +
                      type.flag_map[2 ** i] = flag
         
     | 
| 
      
 19 
     | 
    
         
            +
                    end
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
                    type
         
     | 
| 
      
 22 
     | 
    
         
            +
                  end
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
                  def self.[](*flags)
         
     | 
| 
      
 25 
     | 
    
         
            +
                    new(*flags)
         
     | 
| 
      
 26 
     | 
    
         
            +
                  end
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
                  def self.load(value, property)
         
     | 
| 
      
 29 
     | 
    
         
            +
                    begin
         
     | 
| 
      
 30 
     | 
    
         
            +
                      matches = []
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
                      0.upto((Math.log(value) / Math.log(2)).ceil) do |i|
         
     | 
| 
      
 33 
     | 
    
         
            +
                        pow = 2 ** i
         
     | 
| 
      
 34 
     | 
    
         
            +
                        matches << flag_map[pow] if value & pow == pow
         
     | 
| 
      
 35 
     | 
    
         
            +
                      end
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
                      matches.compact
         
     | 
| 
      
 38 
     | 
    
         
            +
                    rescue TypeError, Errno::EDOM
         
     | 
| 
      
 39 
     | 
    
         
            +
                      []
         
     | 
| 
      
 40 
     | 
    
         
            +
                    end
         
     | 
| 
      
 41 
     | 
    
         
            +
                  end
         
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
      
 43 
     | 
    
         
            +
                  def self.dump(value, property)
         
     | 
| 
      
 44 
     | 
    
         
            +
                    return if value.nil?
         
     | 
| 
      
 45 
     | 
    
         
            +
                    flags = value.is_a?(Array) ? value : [value]
         
     | 
| 
      
 46 
     | 
    
         
            +
                    flags.map!{ |f| f.to_sym }
         
     | 
| 
      
 47 
     | 
    
         
            +
                    flag_map.invert.values_at(*flags.flatten).compact.inject(0) { |sum, i| sum + i }
         
     | 
| 
      
 48 
     | 
    
         
            +
                  end
         
     | 
| 
      
 49 
     | 
    
         
            +
                end # class Flag
         
     | 
| 
      
 50 
     | 
    
         
            +
              end # module Types
         
     | 
| 
      
 51 
     | 
    
         
            +
            end # module DataMapper
         
     | 
| 
         @@ -0,0 +1,26 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'ipaddr'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            module DataMapper
         
     | 
| 
      
 4 
     | 
    
         
            +
              module Types
         
     | 
| 
      
 5 
     | 
    
         
            +
                class IPAddress < DataMapper::Type
         
     | 
| 
      
 6 
     | 
    
         
            +
                  primitive String
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
                  def self.load(value, property)
         
     | 
| 
      
 9 
     | 
    
         
            +
                    if value.nil?
         
     | 
| 
      
 10 
     | 
    
         
            +
                      nil
         
     | 
| 
      
 11 
     | 
    
         
            +
                    elsif value.is_a?(String) && !value.empty?
         
     | 
| 
      
 12 
     | 
    
         
            +
                      IPAddr.new(value)
         
     | 
| 
      
 13 
     | 
    
         
            +
                    elsif value.is_a?(String) && value.empty?
         
     | 
| 
      
 14 
     | 
    
         
            +
                      IPAddr.new("0.0.0.0")
         
     | 
| 
      
 15 
     | 
    
         
            +
                    else
         
     | 
| 
      
 16 
     | 
    
         
            +
                      raise ArgumentError.new("+value+ must be nil or a String")
         
     | 
| 
      
 17 
     | 
    
         
            +
                    end
         
     | 
| 
      
 18 
     | 
    
         
            +
                  end
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
                  def self.dump(value, property)
         
     | 
| 
      
 21 
     | 
    
         
            +
                    return nil if value.nil?
         
     | 
| 
      
 22 
     | 
    
         
            +
                    value.to_s
         
     | 
| 
      
 23 
     | 
    
         
            +
                  end
         
     | 
| 
      
 24 
     | 
    
         
            +
                end # class IPAddress
         
     | 
| 
      
 25 
     | 
    
         
            +
              end # module Types
         
     | 
| 
      
 26 
     | 
    
         
            +
            end # module DataMapper
         
     | 
| 
         @@ -0,0 +1,31 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'json'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            module DataMapper
         
     | 
| 
      
 4 
     | 
    
         
            +
              module Types
         
     | 
| 
      
 5 
     | 
    
         
            +
                class Json < DataMapper::Type
         
     | 
| 
      
 6 
     | 
    
         
            +
                  primitive String
         
     | 
| 
      
 7 
     | 
    
         
            +
                  size 65535
         
     | 
| 
      
 8 
     | 
    
         
            +
                  lazy true
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
                  def self.load(value, property)
         
     | 
| 
      
 11 
     | 
    
         
            +
                    if value.nil?
         
     | 
| 
      
 12 
     | 
    
         
            +
                      nil
         
     | 
| 
      
 13 
     | 
    
         
            +
                    elsif value.is_a?(String)
         
     | 
| 
      
 14 
     | 
    
         
            +
                      ::JSON.load(value)
         
     | 
| 
      
 15 
     | 
    
         
            +
                    else
         
     | 
| 
      
 16 
     | 
    
         
            +
                      raise ArgumentError.new("+value+ must be nil or a String")
         
     | 
| 
      
 17 
     | 
    
         
            +
                    end
         
     | 
| 
      
 18 
     | 
    
         
            +
                  end
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
                  def self.dump(value, property)
         
     | 
| 
      
 21 
     | 
    
         
            +
                    if value.nil?
         
     | 
| 
      
 22 
     | 
    
         
            +
                      nil
         
     | 
| 
      
 23 
     | 
    
         
            +
                    elsif value.is_a?(String)
         
     | 
| 
      
 24 
     | 
    
         
            +
                      value
         
     | 
| 
      
 25 
     | 
    
         
            +
                    else
         
     | 
| 
      
 26 
     | 
    
         
            +
                      ::JSON.dump(value)
         
     | 
| 
      
 27 
     | 
    
         
            +
                    end
         
     | 
| 
      
 28 
     | 
    
         
            +
                  end
         
     | 
| 
      
 29 
     | 
    
         
            +
                end # class Json
         
     | 
| 
      
 30 
     | 
    
         
            +
              end # module Types
         
     | 
| 
      
 31 
     | 
    
         
            +
            end # module DataMapper
         
     | 
    
        data/lib/dm-types/uri.rb
    ADDED
    
    | 
         @@ -0,0 +1,19 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'rubygems'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'addressable/uri'
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            module DataMapper
         
     | 
| 
      
 5 
     | 
    
         
            +
              module Types
         
     | 
| 
      
 6 
     | 
    
         
            +
                class URI < DataMapper::Type
         
     | 
| 
      
 7 
     | 
    
         
            +
                  primitive String
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
                  def self.load(value, property)
         
     | 
| 
      
 10 
     | 
    
         
            +
                    Addressable::URI.parse(value)
         
     | 
| 
      
 11 
     | 
    
         
            +
                  end
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
                  def self.dump(value, property)
         
     | 
| 
      
 14 
     | 
    
         
            +
                    return nil if value.nil?
         
     | 
| 
      
 15 
     | 
    
         
            +
                    value.to_s
         
     | 
| 
      
 16 
     | 
    
         
            +
                  end
         
     | 
| 
      
 17 
     | 
    
         
            +
                end # class URI
         
     | 
| 
      
 18 
     | 
    
         
            +
              end # module Types
         
     | 
| 
      
 19 
     | 
    
         
            +
            end # module DataMapper
         
     | 
| 
         @@ -0,0 +1,31 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'yaml'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            module DataMapper
         
     | 
| 
      
 4 
     | 
    
         
            +
              module Types
         
     | 
| 
      
 5 
     | 
    
         
            +
                class Yaml < DataMapper::Type
         
     | 
| 
      
 6 
     | 
    
         
            +
                  primitive String
         
     | 
| 
      
 7 
     | 
    
         
            +
                  size 65535
         
     | 
| 
      
 8 
     | 
    
         
            +
                  lazy true
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
                  def self.load(value, property)
         
     | 
| 
      
 11 
     | 
    
         
            +
                    if value.nil?
         
     | 
| 
      
 12 
     | 
    
         
            +
                      nil
         
     | 
| 
      
 13 
     | 
    
         
            +
                    elsif value.is_a?(String)
         
     | 
| 
      
 14 
     | 
    
         
            +
                      ::YAML.load(value)
         
     | 
| 
      
 15 
     | 
    
         
            +
                    else
         
     | 
| 
      
 16 
     | 
    
         
            +
                      raise ArgumentError.new("+value+ must be nil or a String")
         
     | 
| 
      
 17 
     | 
    
         
            +
                    end
         
     | 
| 
      
 18 
     | 
    
         
            +
                  end
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
                  def self.dump(value, property)
         
     | 
| 
      
 21 
     | 
    
         
            +
                    if value.nil?
         
     | 
| 
      
 22 
     | 
    
         
            +
                      nil
         
     | 
| 
      
 23 
     | 
    
         
            +
                    elsif value.is_a?(String) && value =~ /^---/
         
     | 
| 
      
 24 
     | 
    
         
            +
                      value
         
     | 
| 
      
 25 
     | 
    
         
            +
                    else
         
     | 
| 
      
 26 
     | 
    
         
            +
                      ::YAML.dump(value)
         
     | 
| 
      
 27 
     | 
    
         
            +
                    end
         
     | 
| 
      
 28 
     | 
    
         
            +
                  end
         
     | 
| 
      
 29 
     | 
    
         
            +
                end # class Yaml
         
     | 
| 
      
 30 
     | 
    
         
            +
              end # module Types
         
     | 
| 
      
 31 
     | 
    
         
            +
            end # module DataMapper
         
     | 
| 
         @@ -0,0 +1,24 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'pathname'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require Pathname(__FILE__).dirname.parent.expand_path + 'spec_helper'
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            describe DataMapper::Types::Enum do
         
     | 
| 
      
 5 
     | 
    
         
            +
              before(:all) do
         
     | 
| 
      
 6 
     | 
    
         
            +
                class Bug
         
     | 
| 
      
 7 
     | 
    
         
            +
                  include DataMapper::Resource
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
                  property :id, Integer, :serial => true
         
     | 
| 
      
 10 
     | 
    
         
            +
                  property :status, Enum[:crit, :warn, :info, :unknown]
         
     | 
| 
      
 11 
     | 
    
         
            +
                end
         
     | 
| 
      
 12 
     | 
    
         
            +
                Bug.auto_migrate!
         
     | 
| 
      
 13 
     | 
    
         
            +
              end
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
              it "should work" do
         
     | 
| 
      
 16 
     | 
    
         
            +
                repository(:default) do
         
     | 
| 
      
 17 
     | 
    
         
            +
                  Bug.create!(:status => :crit)
         
     | 
| 
      
 18 
     | 
    
         
            +
                  Bug.create!(:status => :warn)
         
     | 
| 
      
 19 
     | 
    
         
            +
                end
         
     | 
| 
      
 20 
     | 
    
         
            +
                bugs = Bug.all
         
     | 
| 
      
 21 
     | 
    
         
            +
                bugs[0].status.should == :crit
         
     | 
| 
      
 22 
     | 
    
         
            +
                bugs[1].status.should == :warn
         
     | 
| 
      
 23 
     | 
    
         
            +
              end
         
     | 
| 
      
 24 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,29 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'pathname'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require Pathname(__FILE__).dirname.parent.expand_path + 'spec_helper'
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            describe DataMapper::Types::Flag do
         
     | 
| 
      
 5 
     | 
    
         
            +
              before(:all) do
         
     | 
| 
      
 6 
     | 
    
         
            +
                class Shirt
         
     | 
| 
      
 7 
     | 
    
         
            +
                  include DataMapper::Resource
         
     | 
| 
      
 8 
     | 
    
         
            +
                  property :id, Serial
         
     | 
| 
      
 9 
     | 
    
         
            +
                  property :sizes, DM::Flag[:xs, :small, :medium, :large, :xl, :xxl]
         
     | 
| 
      
 10 
     | 
    
         
            +
                end
         
     | 
| 
      
 11 
     | 
    
         
            +
                Shirt.auto_migrate!
         
     | 
| 
      
 12 
     | 
    
         
            +
              end
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
              it "should save with create({:flag_field => [:flags]})" do
         
     | 
| 
      
 15 
     | 
    
         
            +
                lambda { Shirt.create(:sizes => [:medium, :large]) }.should_not raise_error
         
     | 
| 
      
 16 
     | 
    
         
            +
                repository do
         
     | 
| 
      
 17 
     | 
    
         
            +
                  Shirt.get(1).sizes.should == [:medium, :large]
         
     | 
| 
      
 18 
     | 
    
         
            +
                end
         
     | 
| 
      
 19 
     | 
    
         
            +
              end
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
              it "should save with flag_field=[:flags]" do
         
     | 
| 
      
 22 
     | 
    
         
            +
                shirt = Shirt.new
         
     | 
| 
      
 23 
     | 
    
         
            +
                shirt.sizes = [:small, :xs]
         
     | 
| 
      
 24 
     | 
    
         
            +
                lambda { shirt.save }.should_not raise_error
         
     | 
| 
      
 25 
     | 
    
         
            +
                repository do
         
     | 
| 
      
 26 
     | 
    
         
            +
                  Shirt.get(2).sizes.should == [:xs, :small]
         
     | 
| 
      
 27 
     | 
    
         
            +
                end
         
     | 
| 
      
 28 
     | 
    
         
            +
              end
         
     | 
| 
      
 29 
     | 
    
         
            +
            end
         
     | 
    
        data/spec/spec.opts
    ADDED
    
    
    
        data/spec/spec_helper.rb
    ADDED
    
    | 
         @@ -0,0 +1,27 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'rubygems'
         
     | 
| 
      
 2 
     | 
    
         
            +
            gem 'rspec', '>=1.1.3'
         
     | 
| 
      
 3 
     | 
    
         
            +
            require 'spec'
         
     | 
| 
      
 4 
     | 
    
         
            +
            require 'pathname'
         
     | 
| 
      
 5 
     | 
    
         
            +
            require Pathname(__FILE__).dirname.parent.expand_path + 'lib/dm-types'
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            ENV["SQLITE3_SPEC_URI"]   ||= 'sqlite3::memory:'
         
     | 
| 
      
 8 
     | 
    
         
            +
            ENV["MYSQL_SPEC_URI"]     ||= 'mysql://localhost/dm_core_test'
         
     | 
| 
      
 9 
     | 
    
         
            +
            ENV["POSTGRES_SPEC_URI"]  ||= 'postgres://postgres@localhost/dm_more_test'
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
            def setup_adapter(name, default_uri = nil)
         
     | 
| 
      
 12 
     | 
    
         
            +
              begin
         
     | 
| 
      
 13 
     | 
    
         
            +
                DataMapper.setup(name, ENV["#{ENV['ADAPTER'].to_s.upcase}_SPEC_URI"] || default_uri)
         
     | 
| 
      
 14 
     | 
    
         
            +
                Object.const_set('ADAPTER', ENV['ADAPTER'].to_sym) if name.to_s == ENV['ADAPTER']
         
     | 
| 
      
 15 
     | 
    
         
            +
                true
         
     | 
| 
      
 16 
     | 
    
         
            +
              rescue Exception => e
         
     | 
| 
      
 17 
     | 
    
         
            +
                if name.to_s == ENV['ADAPTER']
         
     | 
| 
      
 18 
     | 
    
         
            +
                  Object.const_set('ADAPTER', nil)
         
     | 
| 
      
 19 
     | 
    
         
            +
                  warn "Could not load #{name} adapter: #{e}"
         
     | 
| 
      
 20 
     | 
    
         
            +
                end
         
     | 
| 
      
 21 
     | 
    
         
            +
                false
         
     | 
| 
      
 22 
     | 
    
         
            +
              end
         
     | 
| 
      
 23 
     | 
    
         
            +
            end
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
            ENV['ADAPTER'] ||= 'sqlite3'
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
            setup_adapter(:default)
         
     | 
| 
         @@ -0,0 +1,66 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'pathname'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require Pathname(__FILE__).dirname.parent.expand_path + 'spec_helper'
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            describe DataMapper::Types::Enum do
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
              describe ".new" do
         
     | 
| 
      
 7 
     | 
    
         
            +
                it "should create a Class" do
         
     | 
| 
      
 8 
     | 
    
         
            +
                  DataMapper::Types::Enum.new.should be_instance_of(Class)
         
     | 
| 
      
 9 
     | 
    
         
            +
                end
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
                it "should create unique a Class each call" do
         
     | 
| 
      
 12 
     | 
    
         
            +
                  DataMapper::Types::Enum.new.should_not == DataMapper::Types::Enum.new
         
     | 
| 
      
 13 
     | 
    
         
            +
                end
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                it "should use the arguments as the values in the @flag_map hash" do
         
     | 
| 
      
 16 
     | 
    
         
            +
                  DataMapper::Types::Enum.new(:first, :second, :third).flag_map.values.should == [:first, :second, :third]
         
     | 
| 
      
 17 
     | 
    
         
            +
                end
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
                it "should create incremental keys for the @flag_map hash, staring at 1" do
         
     | 
| 
      
 20 
     | 
    
         
            +
                  DataMapper::Types::Enum.new(:one, :two, :three, :four).flag_map.keys.should == (1..4).to_a
         
     | 
| 
      
 21 
     | 
    
         
            +
                end
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
                it "should have an Integer primitive type" do
         
     | 
| 
      
 24 
     | 
    
         
            +
                  DataMapper::Types::Enum.new.primitive.should == Integer
         
     | 
| 
      
 25 
     | 
    
         
            +
                end
         
     | 
| 
      
 26 
     | 
    
         
            +
              end
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
              describe ".[]" do
         
     | 
| 
      
 29 
     | 
    
         
            +
                it "should be an alias for the new method" do
         
     | 
| 
      
 30 
     | 
    
         
            +
                  DataMapper::Types::Enum.should_receive(:new).with(:uno, :dos, :tres)
         
     | 
| 
      
 31 
     | 
    
         
            +
                  DataMapper::Types::Enum[:uno, :dos, :tres]
         
     | 
| 
      
 32 
     | 
    
         
            +
                end
         
     | 
| 
      
 33 
     | 
    
         
            +
              end
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
              describe ".dump" do
         
     | 
| 
      
 36 
     | 
    
         
            +
                before(:each) do
         
     | 
| 
      
 37 
     | 
    
         
            +
                  @enum = DataMapper::Types::Enum[:first, :second, :third]
         
     | 
| 
      
 38 
     | 
    
         
            +
                end
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
                it "should return the key of the value match from the flag map" do
         
     | 
| 
      
 41 
     | 
    
         
            +
                  @enum.dump(:first, :property).should == 1
         
     | 
| 
      
 42 
     | 
    
         
            +
                  @enum.dump(:second, :property).should == 2
         
     | 
| 
      
 43 
     | 
    
         
            +
                  @enum.dump(:third, :property).should == 3
         
     | 
| 
      
 44 
     | 
    
         
            +
                end
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
                it "should return nil if there is no match" do
         
     | 
| 
      
 47 
     | 
    
         
            +
                  @enum.dump(:zero, :property).should be_nil
         
     | 
| 
      
 48 
     | 
    
         
            +
                end
         
     | 
| 
      
 49 
     | 
    
         
            +
              end
         
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
      
 51 
     | 
    
         
            +
              describe ".load" do
         
     | 
| 
      
 52 
     | 
    
         
            +
                before(:each) do
         
     | 
| 
      
 53 
     | 
    
         
            +
                  @enum = DataMapper::Types::Enum[:uno, :dos, :tres]
         
     | 
| 
      
 54 
     | 
    
         
            +
                end
         
     | 
| 
      
 55 
     | 
    
         
            +
             
     | 
| 
      
 56 
     | 
    
         
            +
                it "should return the value of the key match from the flag map" do
         
     | 
| 
      
 57 
     | 
    
         
            +
                  @enum.load(1, :property).should == :uno
         
     | 
| 
      
 58 
     | 
    
         
            +
                  @enum.load(2, :property).should == :dos
         
     | 
| 
      
 59 
     | 
    
         
            +
                  @enum.load(3, :property).should == :tres
         
     | 
| 
      
 60 
     | 
    
         
            +
                end
         
     | 
| 
      
 61 
     | 
    
         
            +
             
     | 
| 
      
 62 
     | 
    
         
            +
                it "should return nil if there is no key" do
         
     | 
| 
      
 63 
     | 
    
         
            +
                  @enum.load(-1, :property).should be_nil
         
     | 
| 
      
 64 
     | 
    
         
            +
                end
         
     | 
| 
      
 65 
     | 
    
         
            +
              end
         
     | 
| 
      
 66 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,37 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'pathname'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require Pathname(__FILE__).dirname.parent.expand_path + 'spec_helper'
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            describe DataMapper::Types::EpochTime do
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
              describe ".dump" do
         
     | 
| 
      
 7 
     | 
    
         
            +
                it "should accept Time objects" do
         
     | 
| 
      
 8 
     | 
    
         
            +
                  t = Time.now
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
                  DataMapper::Types::EpochTime.dump(t, :property).should == t.to_i
         
     | 
| 
      
 11 
     | 
    
         
            +
                end
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
                it "should accept DateTime objects" do
         
     | 
| 
      
 14 
     | 
    
         
            +
                  t = DateTime.now
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
                  DataMapper::Types::EpochTime.dump(t, :property).should == Time.parse(t.to_s).to_i
         
     | 
| 
      
 17 
     | 
    
         
            +
                end
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
                it "should accept Integer objects" do
         
     | 
| 
      
 20 
     | 
    
         
            +
                  t = Time.now.to_i
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
                  DataMapper::Types::EpochTime.dump(t, :property).should == t
         
     | 
| 
      
 23 
     | 
    
         
            +
                end
         
     | 
| 
      
 24 
     | 
    
         
            +
              end
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
              describe ".load" do
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
                it "should load null as nil" do
         
     | 
| 
      
 29 
     | 
    
         
            +
                  DataMapper::Types::EpochTime.load(nil, :property).should == nil
         
     | 
| 
      
 30 
     | 
    
         
            +
                end
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
                it "should load #{Time.now.to_i} as Time.at(#{Time.now.to_i})" do
         
     | 
| 
      
 33 
     | 
    
         
            +
                  t = Time.now.to_i
         
     | 
| 
      
 34 
     | 
    
         
            +
                  DataMapper::Types::EpochTime.load(Time.now.to_i, :property).should == Time.at(t)
         
     | 
| 
      
 35 
     | 
    
         
            +
                end
         
     | 
| 
      
 36 
     | 
    
         
            +
              end
         
     | 
| 
      
 37 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,38 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'pathname'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require Pathname(__FILE__).dirname.parent.expand_path + 'spec_helper'
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            describe DataMapper::Types::FilePath do
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
              before(:each) do
         
     | 
| 
      
 7 
     | 
    
         
            +
                @path_str = "/usr/bin/ruby"
         
     | 
| 
      
 8 
     | 
    
         
            +
                @path = Pathname.new(@path_str)
         
     | 
| 
      
 9 
     | 
    
         
            +
              end
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
              describe ".dump" do
         
     | 
| 
      
 12 
     | 
    
         
            +
                it "should return the file path as a String" do
         
     | 
| 
      
 13 
     | 
    
         
            +
                  DataMapper::Types::FilePath.dump(@path_str, :property).should == @path_str
         
     | 
| 
      
 14 
     | 
    
         
            +
                end
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
                it "should return nil if the String is nil" do
         
     | 
| 
      
 17 
     | 
    
         
            +
                  DataMapper::Types::FilePath.dump(nil, :property).should be_nil
         
     | 
| 
      
 18 
     | 
    
         
            +
                end
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
                it "should return an empty file path if the String is empty" do
         
     | 
| 
      
 21 
     | 
    
         
            +
                  DataMapper::Types::FilePath.dump("", :property).should == ""
         
     | 
| 
      
 22 
     | 
    
         
            +
                end
         
     | 
| 
      
 23 
     | 
    
         
            +
              end
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
              describe ".load" do
         
     | 
| 
      
 26 
     | 
    
         
            +
                it "should return the file path as a Pathname" do
         
     | 
| 
      
 27 
     | 
    
         
            +
                  DataMapper::Types::FilePath.load(@uri_str, :property).should == @uri
         
     | 
| 
      
 28 
     | 
    
         
            +
                end
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
                it "should return nil if given nil" do
         
     | 
| 
      
 31 
     | 
    
         
            +
                  DataMapper::Types::FilePath.load(nil, :property).should be_nil
         
     | 
| 
      
 32 
     | 
    
         
            +
                end
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
                it "should return an empty Pathname if given an empty String" do
         
     | 
| 
      
 35 
     | 
    
         
            +
                  DataMapper::Types::FilePath.load("", :property).should == Pathname.new("")
         
     | 
| 
      
 36 
     | 
    
         
            +
                end
         
     | 
| 
      
 37 
     | 
    
         
            +
              end
         
     | 
| 
      
 38 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,86 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'pathname'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require Pathname(__FILE__).dirname.parent.expand_path + 'spec_helper'
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            describe DataMapper::Types::Flag do
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
              describe ".new" do
         
     | 
| 
      
 7 
     | 
    
         
            +
                it "should create a Class" do
         
     | 
| 
      
 8 
     | 
    
         
            +
                  DataMapper::Types::Flag.new.should be_instance_of(Class)
         
     | 
| 
      
 9 
     | 
    
         
            +
                end
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
                it "should create unique a Class each call" do
         
     | 
| 
      
 12 
     | 
    
         
            +
                  DataMapper::Types::Flag.new.should_not == DataMapper::Types::Flag.new
         
     | 
| 
      
 13 
     | 
    
         
            +
                end
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                it "should use the arguments as the values in the @flag_map hash" do
         
     | 
| 
      
 16 
     | 
    
         
            +
                  DataMapper::Types::Flag.new(:first, :second, :third).flag_map.values.should == [:first, :second, :third]
         
     | 
| 
      
 17 
     | 
    
         
            +
                end
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
                it "should create keys by the 2 power series for the @flag_map hash, staring at 1" do
         
     | 
| 
      
 20 
     | 
    
         
            +
                  DataMapper::Types::Flag.new(:one, :two, :three, :four, :five).flag_map.keys.should include(1, 2, 4, 8, 16)
         
     | 
| 
      
 21 
     | 
    
         
            +
                end
         
     | 
| 
      
 22 
     | 
    
         
            +
              end
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
              describe ".[]" do
         
     | 
| 
      
 25 
     | 
    
         
            +
                it "should be an alias for the new method" do
         
     | 
| 
      
 26 
     | 
    
         
            +
                  DataMapper::Types::Flag.should_receive(:new).with(:uno, :dos, :tres)
         
     | 
| 
      
 27 
     | 
    
         
            +
                  DataMapper::Types::Flag[:uno, :dos, :tres]
         
     | 
| 
      
 28 
     | 
    
         
            +
                end
         
     | 
| 
      
 29 
     | 
    
         
            +
              end
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
              describe ".dump" do
         
     | 
| 
      
 32 
     | 
    
         
            +
                before(:each) do
         
     | 
| 
      
 33 
     | 
    
         
            +
                  @flag = DataMapper::Types::Flag[:first, :second, :third, :fourth, :fifth]
         
     | 
| 
      
 34 
     | 
    
         
            +
                end
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
                it "should return the key of the value match from the flag map" do
         
     | 
| 
      
 37 
     | 
    
         
            +
                  @flag.dump(:first, :property).should == 1
         
     | 
| 
      
 38 
     | 
    
         
            +
                  @flag.dump(:second, :property).should == 2
         
     | 
| 
      
 39 
     | 
    
         
            +
                  @flag.dump(:third, :property).should == 4
         
     | 
| 
      
 40 
     | 
    
         
            +
                  @flag.dump(:fourth, :property).should == 8
         
     | 
| 
      
 41 
     | 
    
         
            +
                  @flag.dump(:fifth, :property).should == 16
         
     | 
| 
      
 42 
     | 
    
         
            +
                end
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
                it "should return a binary flag built from the key values of all matches" do
         
     | 
| 
      
 45 
     | 
    
         
            +
                  @flag.dump([:first, :second], :property).should == 3
         
     | 
| 
      
 46 
     | 
    
         
            +
                  @flag.dump([:second, :fourth], :property).should == 10
         
     | 
| 
      
 47 
     | 
    
         
            +
                  @flag.dump([:first, :second, :third, :fourth, :fifth], :property).should == 31
         
     | 
| 
      
 48 
     | 
    
         
            +
                end
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
                it "should return a binary flag built from the key values of all matches even if strings" do
         
     | 
| 
      
 51 
     | 
    
         
            +
                  @flag.dump(["first", "second"], :property).should == 3
         
     | 
| 
      
 52 
     | 
    
         
            +
                  @flag.dump(["second", "fourth"], :property).should == 10
         
     | 
| 
      
 53 
     | 
    
         
            +
                  @flag.dump(["first", "second", "third", "fourth", "fifth"], :property).should == 31
         
     | 
| 
      
 54 
     | 
    
         
            +
                end
         
     | 
| 
      
 55 
     | 
    
         
            +
             
     | 
| 
      
 56 
     | 
    
         
            +
                it "should return 0 if there is no match" do
         
     | 
| 
      
 57 
     | 
    
         
            +
                  @flag.dump(:zero, :property).should == 0
         
     | 
| 
      
 58 
     | 
    
         
            +
                end
         
     | 
| 
      
 59 
     | 
    
         
            +
              end
         
     | 
| 
      
 60 
     | 
    
         
            +
             
     | 
| 
      
 61 
     | 
    
         
            +
              describe ".load" do
         
     | 
| 
      
 62 
     | 
    
         
            +
                before(:each) do
         
     | 
| 
      
 63 
     | 
    
         
            +
                  @flag = DataMapper::Types::Flag[:uno, :dos, :tres, :cuatro, :cinco]
         
     | 
| 
      
 64 
     | 
    
         
            +
                end
         
     | 
| 
      
 65 
     | 
    
         
            +
             
     | 
| 
      
 66 
     | 
    
         
            +
                it "should return the value of the key match from the flag map" do
         
     | 
| 
      
 67 
     | 
    
         
            +
                  @flag.load(1, :property).should == [:uno]
         
     | 
| 
      
 68 
     | 
    
         
            +
                  @flag.load(2, :property).should == [:dos]
         
     | 
| 
      
 69 
     | 
    
         
            +
                  @flag.load(4, :property).should == [:tres]
         
     | 
| 
      
 70 
     | 
    
         
            +
                  @flag.load(8, :property).should == [:cuatro]
         
     | 
| 
      
 71 
     | 
    
         
            +
                  @flag.load(16, :property).should == [:cinco]
         
     | 
| 
      
 72 
     | 
    
         
            +
                end
         
     | 
| 
      
 73 
     | 
    
         
            +
             
     | 
| 
      
 74 
     | 
    
         
            +
                it "should return an array of all flags matches" do
         
     | 
| 
      
 75 
     | 
    
         
            +
                  @flag.load(3, :property).should include(:uno, :dos)
         
     | 
| 
      
 76 
     | 
    
         
            +
                  @flag.load(10, :property).should include(:dos, :cuatro)
         
     | 
| 
      
 77 
     | 
    
         
            +
                  @flag.load(31, :property).should include(:uno, :dos, :tres, :cuatro, :cinco)
         
     | 
| 
      
 78 
     | 
    
         
            +
                end
         
     | 
| 
      
 79 
     | 
    
         
            +
             
     | 
| 
      
 80 
     | 
    
         
            +
                it "should return an empty array if there is no key" do
         
     | 
| 
      
 81 
     | 
    
         
            +
                  @flag.load(-1, :property).should == []
         
     | 
| 
      
 82 
     | 
    
         
            +
                  @flag.load(nil, :property).should == []
         
     | 
| 
      
 83 
     | 
    
         
            +
                  @flag.load(32, :property).should == []
         
     | 
| 
      
 84 
     | 
    
         
            +
                end
         
     | 
| 
      
 85 
     | 
    
         
            +
              end
         
     | 
| 
      
 86 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,39 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'pathname'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require Pathname(__FILE__).dirname.parent.expand_path + 'spec_helper'
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            describe DataMapper::Types::IPAddress do
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
              before(:each) do
         
     | 
| 
      
 7 
     | 
    
         
            +
                @ip_str = "81.20.130.1"
         
     | 
| 
      
 8 
     | 
    
         
            +
                @ip = IPAddr.new(@ip_str)
         
     | 
| 
      
 9 
     | 
    
         
            +
              end
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
              describe ".dump" do
         
     | 
| 
      
 12 
     | 
    
         
            +
                it "should return the IP address as a string" do
         
     | 
| 
      
 13 
     | 
    
         
            +
                  DataMapper::Types::IPAddress.dump(@ip, :property).should == @ip_str
         
     | 
| 
      
 14 
     | 
    
         
            +
                end
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
                it "should return nil if the string is nil" do
         
     | 
| 
      
 17 
     | 
    
         
            +
                  DataMapper::Types::IPAddress.dump(nil, :property).should be_nil
         
     | 
| 
      
 18 
     | 
    
         
            +
                end
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
                it "should return an empty IP address if the string is empty" do
         
     | 
| 
      
 21 
     | 
    
         
            +
                  DataMapper::Types::IPAddress.dump("", :property).should == ""
         
     | 
| 
      
 22 
     | 
    
         
            +
                end
         
     | 
| 
      
 23 
     | 
    
         
            +
              end
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
              describe ".load" do
         
     | 
| 
      
 26 
     | 
    
         
            +
                it "should return the IP address string as IPAddr" do
         
     | 
| 
      
 27 
     | 
    
         
            +
                  DataMapper::Types::IPAddress.load(@ip_str, :property).should == @ip
         
     | 
| 
      
 28 
     | 
    
         
            +
                end
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
                it "should return nil if given nil" do
         
     | 
| 
      
 31 
     | 
    
         
            +
                  DataMapper::Types::IPAddress.load(nil, :property).should be_nil
         
     | 
| 
      
 32 
     | 
    
         
            +
                end
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
                it "should return an empty IP address if given an empty string" do
         
     | 
| 
      
 35 
     | 
    
         
            +
                  DataMapper::Types::IPAddress.load("", :property).should == IPAddr.new("0.0.0.0")
         
     | 
| 
      
 36 
     | 
    
         
            +
                end
         
     | 
| 
      
 37 
     | 
    
         
            +
              end
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,38 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'pathname'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require Pathname(__FILE__).dirname.parent.expand_path + 'spec_helper'
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            describe DataMapper::Types::URI do
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
              before(:each) do
         
     | 
| 
      
 7 
     | 
    
         
            +
                @uri_str = "http://example.com/path/to/resource/"
         
     | 
| 
      
 8 
     | 
    
         
            +
                @uri = Addressable::URI.parse(@uri_str)
         
     | 
| 
      
 9 
     | 
    
         
            +
              end
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
              describe ".dump" do
         
     | 
| 
      
 12 
     | 
    
         
            +
                it "should return the URI as a String" do
         
     | 
| 
      
 13 
     | 
    
         
            +
                  DataMapper::Types::URI.dump(@uri, :property).should == @uri_str
         
     | 
| 
      
 14 
     | 
    
         
            +
                end
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
                it "should return nil if the String is nil" do
         
     | 
| 
      
 17 
     | 
    
         
            +
                  DataMapper::Types::URI.dump(nil, :property).should be_nil
         
     | 
| 
      
 18 
     | 
    
         
            +
                end
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
                it "should return an empty URI if the String is empty" do
         
     | 
| 
      
 21 
     | 
    
         
            +
                  DataMapper::Types::URI.dump("", :property).should == ""
         
     | 
| 
      
 22 
     | 
    
         
            +
                end
         
     | 
| 
      
 23 
     | 
    
         
            +
              end
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
              describe ".load" do
         
     | 
| 
      
 26 
     | 
    
         
            +
                it "should return the URI as Addressable" do
         
     | 
| 
      
 27 
     | 
    
         
            +
                  DataMapper::Types::URI.load(@uri_str, :property).should == @uri
         
     | 
| 
      
 28 
     | 
    
         
            +
                end
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
                it "should return nil if given nil" do
         
     | 
| 
      
 31 
     | 
    
         
            +
                  DataMapper::Types::URI.load(nil, :property).should be_nil
         
     | 
| 
      
 32 
     | 
    
         
            +
                end
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
                it "should return an empty URI if given an empty String" do
         
     | 
| 
      
 35 
     | 
    
         
            +
                  DataMapper::Types::URI.load("", :property).should == Addressable::URI.parse("")
         
     | 
| 
      
 36 
     | 
    
         
            +
                end
         
     | 
| 
      
 37 
     | 
    
         
            +
              end
         
     | 
| 
      
 38 
     | 
    
         
            +
            end
         
     | 
    
        metadata
    ADDED
    
    | 
         @@ -0,0 +1,87 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            --- !ruby/object:Gem::Specification 
         
     | 
| 
      
 2 
     | 
    
         
            +
            name: dm-types
         
     | 
| 
      
 3 
     | 
    
         
            +
            version: !ruby/object:Gem::Version 
         
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.9.2
         
     | 
| 
      
 5 
     | 
    
         
            +
            platform: ruby
         
     | 
| 
      
 6 
     | 
    
         
            +
            authors: 
         
     | 
| 
      
 7 
     | 
    
         
            +
            - Sam Smoot
         
     | 
| 
      
 8 
     | 
    
         
            +
            autorequire: 
         
     | 
| 
      
 9 
     | 
    
         
            +
            bindir: bin
         
     | 
| 
      
 10 
     | 
    
         
            +
            cert_chain: []
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
            date: 2008-06-25 00:00:00 -05:00
         
     | 
| 
      
 13 
     | 
    
         
            +
            default_executable: 
         
     | 
| 
      
 14 
     | 
    
         
            +
            dependencies: 
         
     | 
| 
      
 15 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency 
         
     | 
| 
      
 16 
     | 
    
         
            +
              name: dm-core
         
     | 
| 
      
 17 
     | 
    
         
            +
              version_requirement: 
         
     | 
| 
      
 18 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement 
         
     | 
| 
      
 19 
     | 
    
         
            +
                requirements: 
         
     | 
| 
      
 20 
     | 
    
         
            +
                - - "="
         
     | 
| 
      
 21 
     | 
    
         
            +
                  - !ruby/object:Gem::Version 
         
     | 
| 
      
 22 
     | 
    
         
            +
                    version: 0.9.2
         
     | 
| 
      
 23 
     | 
    
         
            +
                version: 
         
     | 
| 
      
 24 
     | 
    
         
            +
            description: DataMapper plugin providing extra data types
         
     | 
| 
      
 25 
     | 
    
         
            +
            email: ssmoot@gmail.com
         
     | 
| 
      
 26 
     | 
    
         
            +
            executables: []
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
            extensions: []
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
            extra_rdoc_files: 
         
     | 
| 
      
 31 
     | 
    
         
            +
            - README
         
     | 
| 
      
 32 
     | 
    
         
            +
            - LICENSE
         
     | 
| 
      
 33 
     | 
    
         
            +
            - TODO
         
     | 
| 
      
 34 
     | 
    
         
            +
            files: 
         
     | 
| 
      
 35 
     | 
    
         
            +
            - lib/dm-types/csv.rb
         
     | 
| 
      
 36 
     | 
    
         
            +
            - lib/dm-types/enum.rb
         
     | 
| 
      
 37 
     | 
    
         
            +
            - lib/dm-types/epoch_time.rb
         
     | 
| 
      
 38 
     | 
    
         
            +
            - lib/dm-types/file_path.rb
         
     | 
| 
      
 39 
     | 
    
         
            +
            - lib/dm-types/flag.rb
         
     | 
| 
      
 40 
     | 
    
         
            +
            - lib/dm-types/ip_address.rb
         
     | 
| 
      
 41 
     | 
    
         
            +
            - lib/dm-types/json.rb
         
     | 
| 
      
 42 
     | 
    
         
            +
            - lib/dm-types/serial.rb
         
     | 
| 
      
 43 
     | 
    
         
            +
            - lib/dm-types/uri.rb
         
     | 
| 
      
 44 
     | 
    
         
            +
            - lib/dm-types/yaml.rb
         
     | 
| 
      
 45 
     | 
    
         
            +
            - lib/dm-types.rb
         
     | 
| 
      
 46 
     | 
    
         
            +
            - spec/integration/enum_spec.rb
         
     | 
| 
      
 47 
     | 
    
         
            +
            - spec/integration/flag_spec.rb
         
     | 
| 
      
 48 
     | 
    
         
            +
            - spec/spec_helper.rb
         
     | 
| 
      
 49 
     | 
    
         
            +
            - spec/unit/enum_spec.rb
         
     | 
| 
      
 50 
     | 
    
         
            +
            - spec/unit/epoch_time_spec.rb
         
     | 
| 
      
 51 
     | 
    
         
            +
            - spec/unit/file_path_spec.rb
         
     | 
| 
      
 52 
     | 
    
         
            +
            - spec/unit/flag_spec.rb
         
     | 
| 
      
 53 
     | 
    
         
            +
            - spec/unit/ip_address_spec.rb
         
     | 
| 
      
 54 
     | 
    
         
            +
            - spec/unit/uri_spec.rb
         
     | 
| 
      
 55 
     | 
    
         
            +
            - spec/spec.opts
         
     | 
| 
      
 56 
     | 
    
         
            +
            - Rakefile
         
     | 
| 
      
 57 
     | 
    
         
            +
            - README
         
     | 
| 
      
 58 
     | 
    
         
            +
            - LICENSE
         
     | 
| 
      
 59 
     | 
    
         
            +
            - TODO
         
     | 
| 
      
 60 
     | 
    
         
            +
            has_rdoc: true
         
     | 
| 
      
 61 
     | 
    
         
            +
            homepage: http://github.com/sam/dm-more/tree/master/dm-types
         
     | 
| 
      
 62 
     | 
    
         
            +
            post_install_message: 
         
     | 
| 
      
 63 
     | 
    
         
            +
            rdoc_options: []
         
     | 
| 
      
 64 
     | 
    
         
            +
             
     | 
| 
      
 65 
     | 
    
         
            +
            require_paths: 
         
     | 
| 
      
 66 
     | 
    
         
            +
            - lib
         
     | 
| 
      
 67 
     | 
    
         
            +
            required_ruby_version: !ruby/object:Gem::Requirement 
         
     | 
| 
      
 68 
     | 
    
         
            +
              requirements: 
         
     | 
| 
      
 69 
     | 
    
         
            +
              - - ">="
         
     | 
| 
      
 70 
     | 
    
         
            +
                - !ruby/object:Gem::Version 
         
     | 
| 
      
 71 
     | 
    
         
            +
                  version: "0"
         
     | 
| 
      
 72 
     | 
    
         
            +
              version: 
         
     | 
| 
      
 73 
     | 
    
         
            +
            required_rubygems_version: !ruby/object:Gem::Requirement 
         
     | 
| 
      
 74 
     | 
    
         
            +
              requirements: 
         
     | 
| 
      
 75 
     | 
    
         
            +
              - - ">="
         
     | 
| 
      
 76 
     | 
    
         
            +
                - !ruby/object:Gem::Version 
         
     | 
| 
      
 77 
     | 
    
         
            +
                  version: "0"
         
     | 
| 
      
 78 
     | 
    
         
            +
              version: 
         
     | 
| 
      
 79 
     | 
    
         
            +
            requirements: []
         
     | 
| 
      
 80 
     | 
    
         
            +
             
     | 
| 
      
 81 
     | 
    
         
            +
            rubyforge_project: 
         
     | 
| 
      
 82 
     | 
    
         
            +
            rubygems_version: 1.0.1
         
     | 
| 
      
 83 
     | 
    
         
            +
            signing_key: 
         
     | 
| 
      
 84 
     | 
    
         
            +
            specification_version: 2
         
     | 
| 
      
 85 
     | 
    
         
            +
            summary: DataMapper plugin providing extra data types
         
     | 
| 
      
 86 
     | 
    
         
            +
            test_files: []
         
     | 
| 
      
 87 
     | 
    
         
            +
             
     |