mits 0.0.1 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +9 -0
- data/{LICENSE.txt → LICENSE} +0 -0
- data/README.md +34 -16
- data/lib/mits/document.rb +35 -0
- data/lib/mits/entities/address.rb +16 -0
- data/lib/mits/entities/amenity.rb +8 -0
- data/lib/mits/entities/company.rb +11 -0
- data/lib/mits/entities/deposit.rb +11 -0
- data/lib/mits/entities/fees.rb +15 -0
- data/lib/mits/entities/file.rb +16 -0
- data/lib/mits/entities/pet.rb +11 -0
- data/lib/mits/entities/pet_policy.rb +15 -0
- data/lib/mits/entities/property.rb +20 -0
- data/lib/mits/entities/unit.rb +11 -0
- data/lib/mits/mapper.rb +48 -0
- data/lib/mits/mappers/address_mapper.rb +29 -0
- data/lib/mits/mappers/amenities_mapper.rb +14 -0
- data/lib/mits/mappers/company_mapper.rb +11 -0
- data/lib/mits/mappers/deposit_mapper.rb +24 -0
- data/lib/mits/mappers/fees_mapper.rb +15 -0
- data/lib/mits/mappers/files_mapper.rb +19 -0
- data/lib/mits/mappers/pet_policy_mapper.rb +28 -0
- data/lib/mits/mappers/property_mapper.rb +41 -0
- data/lib/mits/mappers/units_mapper.rb +22 -0
- data/lib/mits/saxerator_ext.rb +29 -0
- data/lib/mits/version.rb +2 -2
- data/lib/mits.rb +9 -3
- data/mits.gemspec +13 -6
- data/spec/fixtures/mits.xml +396 -0
- data/spec/fixtures/property.yml +205 -0
- data/spec/lib/mits/document_spec.rb +23 -0
- data/spec/lib/mits/entities/address_spec.rb +16 -0
- data/spec/lib/mits/entities/amenity_spec.rb +8 -0
- data/spec/lib/mits/entities/company_spec.rb +0 -0
- data/spec/lib/mits/entities/deposit_spec.rb +11 -0
- data/spec/lib/mits/entities/fees_spec.rb +15 -0
- data/spec/lib/mits/entities/file_spec.rb +17 -0
- data/spec/lib/mits/entities/pet_policy_spec.rb +14 -0
- data/spec/lib/mits/entities/pet_spec.rb +12 -0
- data/spec/lib/mits/entities/property_spec.rb +20 -0
- data/spec/lib/mits/entities/unit_spec.rb +11 -0
- data/spec/lib/mits/mapper_spec.rb +180 -0
- data/spec/spec_helper.rb +22 -0
- metadata +147 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9e3d066755e4fd3763ed195996832b597c6c559e
|
4
|
+
data.tar.gz: b9ad8637001201a6b12713c373971461c23cba9f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 97d002c90c6ada433bf6a5bb5049ae129ecfa394c86036833f258aacc4bf3f5c3ed92f7c1d945d63801fddf04a7c5c04aec8079e88cfef17548f3fc6e1ce24b9
|
7
|
+
data.tar.gz: e917486f219ab2a63e3bdf52d5c77574bcbc6ee4021931295e5178281a8e34fe59d7037f35dbc1b0f7952fe683f81e8481b83d08c1c51f260958040a2c481bac
|
data/.travis.yml
ADDED
data/{LICENSE.txt → LICENSE}
RENAMED
File without changes
|
data/README.md
CHANGED
@@ -1,31 +1,49 @@
|
|
1
|
-
#
|
1
|
+
# MITS
|
2
2
|
|
3
|
-
|
3
|
+
A SAX powered reader for [Multifamily Information and Transactions Standard \(MITS\)](http://www.mitsproject.org/) compatible documents.
|
4
|
+
|
5
|
+
Currently supporting MITS __4.1__.
|
6
|
+
|
7
|
+
[![Gem Version](https://badge.fury.io/rb/mits.png)](https://rubygems.org/gems/mits) [![Build Status](https://travis-ci.org/doomspork/mits.svg?branch=master)](https://travis-ci.org/doomspork/mits) [![Code Climate](https://codeclimate.com/github/doomspork/mits/badges/gpa.svg)](https://codeclimate.com/github/doomspork/mits) [![Coverage Status](https://coveralls.io/repos/doomspork/mits/badge.png?branch=master)](https://coveralls.io/r/doomspork/mits?branch=master) [![Dependency Status](https://gemnasium.com/doomspork/mits.svg)](https://gemnasium.com/doomspork/mits)
|
4
8
|
|
5
9
|
## Installation
|
6
10
|
|
7
|
-
|
11
|
+
gem install mits
|
12
|
+
|
13
|
+
## Getting Started
|
14
|
+
|
15
|
+
Create a `MITS::Document` with a local filepath or URL:
|
8
16
|
|
9
17
|
```ruby
|
10
|
-
|
18
|
+
document = MITS::Document.new('/example/path/mits_compatible_feed.xml')
|
11
19
|
```
|
12
20
|
|
13
|
-
|
21
|
+
Iterating over properties is easy:
|
14
22
|
|
15
|
-
|
16
|
-
|
17
|
-
|
23
|
+
```ruby
|
24
|
+
document.properties do |property|
|
25
|
+
puts "#{property.name} now available online at #{property.website}"
|
26
|
+
end
|
27
|
+
```
|
18
28
|
|
19
|
-
|
29
|
+
The `#properties` method returns a `Enumerator` if no block is provided:
|
20
30
|
|
21
|
-
|
31
|
+
```ruby
|
22
32
|
|
23
|
-
|
33
|
+
document.properties.each_with_object([]) do |property, arr|
|
34
|
+
# Only include properties with 2 or more units
|
35
|
+
arr.push(property) if property.units.size > 2
|
36
|
+
end
|
37
|
+
```
|
24
38
|
|
25
39
|
## Contributing
|
26
40
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
41
|
+
Feedback, feature requests, and fixes are welcome. Please make appropriate use of [Issues](https://github.com/doomspork/mits/issues) and [Pull Requests](https://github.com/doomspork/mits/pulls). All code should have accompanying tests.
|
42
|
+
|
43
|
+
## Author
|
44
|
+
|
45
|
+
MITS is written and maintained by [@doomspork](http://github.com/doomspork) as part of [CityLeash](https://cityleash.com).
|
46
|
+
|
47
|
+
## License
|
48
|
+
|
49
|
+
Please see [LICENSE](https://github.com/doomspork/mits/blob/master/LICENSE) for licensing details.
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module MITS
|
2
|
+
class Document
|
3
|
+
attr_reader :parser
|
4
|
+
|
5
|
+
def initialize(url)
|
6
|
+
@parser = ::Saxerator.parser(open(url)) do |c|
|
7
|
+
c.put_attributes_in_hash!
|
8
|
+
c.symbolize_keys!
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
def properties
|
13
|
+
return enum_for(:properties) unless block_given?
|
14
|
+
|
15
|
+
physical_property.for_tag(:Property).each do |tag|
|
16
|
+
yield Mapper.property(tag)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def companies
|
21
|
+
return enum_for(:companies) unless block_given?
|
22
|
+
|
23
|
+
physical_property.within(:Management).within(:PropertyContacts).each do |tag|
|
24
|
+
yield Mapper.company(tag)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
|
+
def physical_property
|
31
|
+
parser.within(:PhysicalProperty)
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module MITS
|
2
|
+
class Address
|
3
|
+
include SimpleObjects::Base
|
4
|
+
|
5
|
+
attribute :address1
|
6
|
+
attribute :address2
|
7
|
+
attribute :city
|
8
|
+
attribute :country
|
9
|
+
attribute :description
|
10
|
+
attribute :latitude
|
11
|
+
attribute :longitude
|
12
|
+
attribute :postal_code
|
13
|
+
attribute :state
|
14
|
+
attribute :type
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module MITS
|
2
|
+
class Fees
|
3
|
+
include SimpleObjects::Base
|
4
|
+
|
5
|
+
attribute :admin_fee
|
6
|
+
attribute :application_fee
|
7
|
+
attribute :broker_fee
|
8
|
+
attribute :late_fee_per_day
|
9
|
+
attribute :late_min_fee
|
10
|
+
attribute :late_percent
|
11
|
+
attribute :late_type
|
12
|
+
attribute :non_refundable_hold_fee
|
13
|
+
attribute :prorate_type
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module MITS
|
2
|
+
class File
|
3
|
+
include SimpleObjects::Base
|
4
|
+
|
5
|
+
attribute :active
|
6
|
+
attribute :caption
|
7
|
+
attribute :description
|
8
|
+
attribute :format
|
9
|
+
attribute :height
|
10
|
+
attribute :id
|
11
|
+
attribute :name
|
12
|
+
attribute :rank
|
13
|
+
attribute :source
|
14
|
+
attribute :width
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module MITS
|
2
|
+
class PetPolicy
|
3
|
+
include SimpleObjects::Base
|
4
|
+
|
5
|
+
attribute :allowed
|
6
|
+
attribute :care
|
7
|
+
attribute :deposit
|
8
|
+
attribute :fee
|
9
|
+
attribute :pets
|
10
|
+
attribute :rent
|
11
|
+
attribute :restrictions
|
12
|
+
|
13
|
+
alias_method :allowed?, :allowed
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module MITS
|
2
|
+
class Property
|
3
|
+
include SimpleObjects::Base
|
4
|
+
|
5
|
+
attribute :address
|
6
|
+
attribute :amenities
|
7
|
+
attribute :company_id
|
8
|
+
attribute :deposit
|
9
|
+
attribute :description
|
10
|
+
attribute :fees
|
11
|
+
attribute :files
|
12
|
+
attribute :id
|
13
|
+
attribute :name
|
14
|
+
attribute :pet_policy
|
15
|
+
attribute :summary
|
16
|
+
attribute :type
|
17
|
+
attribute :units
|
18
|
+
attribute :website
|
19
|
+
end
|
20
|
+
end
|
data/lib/mits/mapper.rb
ADDED
@@ -0,0 +1,48 @@
|
|
1
|
+
require 'mits/entities/address'
|
2
|
+
require 'mits/entities/amenity'
|
3
|
+
require 'mits/entities/company'
|
4
|
+
require 'mits/entities/deposit'
|
5
|
+
require 'mits/entities/fees'
|
6
|
+
require 'mits/entities/file'
|
7
|
+
require 'mits/entities/pet'
|
8
|
+
require 'mits/entities/pet_policy'
|
9
|
+
require 'mits/entities/property'
|
10
|
+
require 'mits/entities/unit'
|
11
|
+
|
12
|
+
require 'mits/mappers/address_mapper'
|
13
|
+
require 'mits/mappers/amenities_mapper'
|
14
|
+
require 'mits/mappers/company_mapper'
|
15
|
+
require 'mits/mappers/deposit_mapper'
|
16
|
+
require 'mits/mappers/fees_mapper'
|
17
|
+
require 'mits/mappers/files_mapper'
|
18
|
+
require 'mits/mappers/pet_policy_mapper'
|
19
|
+
require 'mits/mappers/property_mapper'
|
20
|
+
require 'mits/mappers/units_mapper'
|
21
|
+
|
22
|
+
module MITS
|
23
|
+
module Mapper
|
24
|
+
extend AddressMapper
|
25
|
+
extend AmenitiesMapper
|
26
|
+
extend CompanyMapper
|
27
|
+
extend DepositMapper
|
28
|
+
extend FeesMapper
|
29
|
+
extend FilesMapper
|
30
|
+
extend PetPolicyMapper
|
31
|
+
extend PropertyMapper
|
32
|
+
extend UnitsMapper
|
33
|
+
|
34
|
+
extend self
|
35
|
+
|
36
|
+
protected
|
37
|
+
|
38
|
+
def bool(value)
|
39
|
+
value == 'true'
|
40
|
+
end
|
41
|
+
|
42
|
+
def try(value, method)
|
43
|
+
return nil unless value
|
44
|
+
value.send(method)
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module MITS
|
2
|
+
module AddressMapper
|
3
|
+
def address(tag, secondary_tag = nil)
|
4
|
+
attrs = address_attributes(tag)
|
5
|
+
|
6
|
+
if secondary_tag
|
7
|
+
attrs[:latitude] = try(secondary_tag[:Latitude], :to_f)
|
8
|
+
attrs[:longitude] = try(secondary_tag[:Longitude], :to_f)
|
9
|
+
end
|
10
|
+
|
11
|
+
Address.new(attrs)
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def address_attributes(tag)
|
17
|
+
{
|
18
|
+
type: tag[:AddressType],
|
19
|
+
description: tag[:Description],
|
20
|
+
address1: tag[:AddressLine1],
|
21
|
+
address2: tag[:AddressLine2],
|
22
|
+
city: tag[:City],
|
23
|
+
state: tag[:State],
|
24
|
+
postal_code: tag[:PostalCode],
|
25
|
+
country: tag[:Country],
|
26
|
+
}
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module MITS
|
2
|
+
module AmenitiesMapper
|
3
|
+
def amenities(tags)
|
4
|
+
if tags
|
5
|
+
tags = [tags] unless tags.is_a? Array
|
6
|
+
tags.map { |tag| amenity(tag) }
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
def amenity(tag)
|
11
|
+
Amenity.new(description: tag[:Description], type: tag[:AmenityType])
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module MITS
|
2
|
+
module DepositMapper
|
3
|
+
def deposit(tag)
|
4
|
+
Deposit.new(amount: deposit_amount(tag[:Amount][:ValueRange]),
|
5
|
+
description: tag[:Description],
|
6
|
+
percent_refundable: try(tag[:PercentRefundable], :to_f),
|
7
|
+
portion_refundable: try(tag[:PortionRefundable], :to_f),
|
8
|
+
type: tag[:DepositType])
|
9
|
+
end
|
10
|
+
|
11
|
+
private
|
12
|
+
|
13
|
+
def deposit_amount(tag)
|
14
|
+
if tag[:Exact]
|
15
|
+
amount = tag[:Exact].to_f
|
16
|
+
else
|
17
|
+
min = tag[:Min].to_f
|
18
|
+
max = tag[:Max].to_f
|
19
|
+
amount = Range.new(min, max)
|
20
|
+
end
|
21
|
+
amount
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module MITS
|
2
|
+
module FeesMapper
|
3
|
+
def fees(tag)
|
4
|
+
Fees.new(admin_fee: try(tag[:AdminFee], :to_f),
|
5
|
+
application_fee: try(tag[:ApplicationFee], :to_f),
|
6
|
+
broker_fee: try(tag[:BrokerFee], :to_f),
|
7
|
+
late_fee_per_day: try(tag[:LateFeePerDay], :to_f),
|
8
|
+
late_min_fee: try(tag[:LateMinFee], :to_f),
|
9
|
+
late_percent: try(tag[:LatePercent], :to_f),
|
10
|
+
late_type: tag[:LateType],
|
11
|
+
non_refundable_hold_fee: try(tag[:NonRefundableHoldFee], :to_f),
|
12
|
+
prorate_type: tag[:ProrateType])
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module MITS
|
2
|
+
module FilesMapper
|
3
|
+
def files(tags)
|
4
|
+
tags = [tags] unless tags.is_a? Array
|
5
|
+
tags.map do |tag|
|
6
|
+
File.new(active: bool(tag[:Active]),
|
7
|
+
caption: tag[:Caption],
|
8
|
+
description: tag[:Description],
|
9
|
+
format: tag[:Format],
|
10
|
+
height: try(tag[:Height], :to_i),
|
11
|
+
id: tag[:FileID],
|
12
|
+
name: tag[:Name],
|
13
|
+
rank: tag[:Rank],
|
14
|
+
source: tag[:Src],
|
15
|
+
width: tag[:Width])
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module MITS
|
2
|
+
module PetPolicyMapper
|
3
|
+
def pet_policy(tag)
|
4
|
+
if bool(tag[:Allowed])
|
5
|
+
PetPolicy.new(allowed: true,
|
6
|
+
care: bool(tag[:PetCare]),
|
7
|
+
deposit: try(tag[:Deposit], :to_f),
|
8
|
+
fee: try(tag[:Fee], :to_f),
|
9
|
+
pets: pets(tag[:Pets]),
|
10
|
+
rent: try(tag[:Rent], :to_f),
|
11
|
+
restrictions: tag[:Restrictions])
|
12
|
+
else
|
13
|
+
PetPolicy.new(allowed: false)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def pets(tags)
|
18
|
+
tags = [tags] unless tags.is_a? Array
|
19
|
+
tags.map do |tag|
|
20
|
+
Pet.new(count: tag[:Count].to_i,
|
21
|
+
description: tag[:Description],
|
22
|
+
size: tag[:Size],
|
23
|
+
weight: tag[:Weight],
|
24
|
+
type: tag[:PetType])
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module MITS
|
2
|
+
module PropertyMapper
|
3
|
+
def property(tag)
|
4
|
+
basics = property_basics(tag)
|
5
|
+
details = property_details(tag)
|
6
|
+
Property.new(basics.merge(details))
|
7
|
+
end
|
8
|
+
|
9
|
+
private
|
10
|
+
|
11
|
+
def property_basics(tag)
|
12
|
+
propId = tag[:PropertyID]
|
13
|
+
{
|
14
|
+
company_id: company_id(propId[:Identification]),
|
15
|
+
description: tag[:Information][:LongDescription],
|
16
|
+
id: tag[:IDValue],
|
17
|
+
name: propId[:MarketingName],
|
18
|
+
summary: tag[:Information][:ShortDescription],
|
19
|
+
type: tag[:ILS_Identification][:ILS_IdentificationType],
|
20
|
+
website: propId[:WebSite]
|
21
|
+
}
|
22
|
+
end
|
23
|
+
|
24
|
+
def property_details(tag)
|
25
|
+
{
|
26
|
+
address: address(tag[:PropertyID][:Address], tag[:ILS_Identification]),
|
27
|
+
amenities: amenities(tag[:ILS_Unit][:Amenity]),
|
28
|
+
deposit: deposit(tag[:Deposit]),
|
29
|
+
fees: fees(tag[:Fee]),
|
30
|
+
files: files(tag[:File]),
|
31
|
+
pet_policy: pet_policy(tag[:Policy][:Pet]),
|
32
|
+
units: units(tag[:ILS_Unit][:Units][:Unit])
|
33
|
+
}
|
34
|
+
end
|
35
|
+
|
36
|
+
def company_id(tags)
|
37
|
+
tag = tags.find { |t| t[:IDType].downcase == 'company' }
|
38
|
+
tag[:IDValue] if tag
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module MITS
|
2
|
+
module UnitsMapper
|
3
|
+
def units(tags)
|
4
|
+
tags = [tags] unless tags.is_a? Array
|
5
|
+
tags.map do |tag|
|
6
|
+
Unit.new(bathrooms: try(tag[:UnitBathrooms], :to_f),
|
7
|
+
bedrooms: try(tag[:UnitBedrooms], :to_f),
|
8
|
+
name: tag[:MarketingName],
|
9
|
+
rent: try(tag[:UnitRent], :to_f),
|
10
|
+
sqft: unit_sqft(tag))
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def unit_sqft(tag)
|
17
|
+
min = tag[:MinSquareFeet]
|
18
|
+
max = tag[:MaxSquareFeet]
|
19
|
+
Range.new(min.to_i, max.to_i)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module Saxerator
|
2
|
+
module Builder
|
3
|
+
class HashElement < Hash
|
4
|
+
def deep_hash
|
5
|
+
self.reduce({}) do |memo, (key, value)|
|
6
|
+
as_hash = if value.is_a? Array
|
7
|
+
value.map { |v| try_hash(v) }
|
8
|
+
else
|
9
|
+
try_hash(value)
|
10
|
+
end
|
11
|
+
memo[key] = as_hash
|
12
|
+
memo
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def try_hash(val)
|
17
|
+
if val.is_a? EmptyElement
|
18
|
+
nil
|
19
|
+
elsif val.respond_to? :deep_hash
|
20
|
+
val.deep_hash
|
21
|
+
elsif val.respond_to? :to_h
|
22
|
+
val.to_h
|
23
|
+
else
|
24
|
+
val
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
data/lib/mits/version.rb
CHANGED
@@ -1,3 +1,3 @@
|
|
1
|
-
module
|
2
|
-
VERSION =
|
1
|
+
module MITS
|
2
|
+
VERSION = '0.1.0'
|
3
3
|
end
|
data/lib/mits.rb
CHANGED
@@ -1,5 +1,11 @@
|
|
1
|
-
require
|
1
|
+
require 'open-uri'
|
2
|
+
require 'saxerator'
|
3
|
+
require 'simple_objects'
|
2
4
|
|
3
|
-
|
4
|
-
|
5
|
+
require 'mits/document'
|
6
|
+
require 'mits/mapper'
|
7
|
+
require 'mits/saxerator_ext'
|
8
|
+
require 'mits/version'
|
9
|
+
|
10
|
+
module MITS
|
5
11
|
end
|
data/mits.gemspec
CHANGED
@@ -5,11 +5,11 @@ require 'mits/version'
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
7
|
spec.name = 'mits'
|
8
|
-
spec.version =
|
8
|
+
spec.version = MITS::VERSION
|
9
9
|
spec.authors = ['Sean Callan']
|
10
10
|
spec.email = ['seancallan@gmail.com']
|
11
|
-
spec.summary = 'A SAX powered MITS reader.'
|
12
|
-
spec.description = ''
|
11
|
+
spec.summary = 'A SAX powered MITS reader for Ruby.'
|
12
|
+
spec.description = 'A SAX powered Multifamily Information and Transactions Standard (MITS) reader for Ruby.'
|
13
13
|
spec.homepage = 'https://github.com/doomspork/mits'
|
14
14
|
spec.license = 'MIT'
|
15
15
|
|
@@ -18,7 +18,14 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ['lib']
|
20
20
|
|
21
|
-
spec.add_dependency 'simple_objects', '~>
|
22
|
-
spec.
|
23
|
-
|
21
|
+
spec.add_dependency 'simple_objects', '~> 1.1'
|
22
|
+
spec.add_dependency 'saxerator', '~> 0.9.5'
|
23
|
+
|
24
|
+
spec.add_development_dependency 'bundler', '~> 1.7'
|
25
|
+
spec.add_development_dependency 'coveralls', '~> 0.7'
|
26
|
+
spec.add_development_dependency 'pry', '~> 0.10'
|
27
|
+
spec.add_development_dependency 'pry-byebug', '~> 2.0'
|
28
|
+
spec.add_development_dependency 'rake', '~> 10.0'
|
29
|
+
spec.add_development_dependency 'rspec', '~> 3.1'
|
30
|
+
spec.add_development_dependency 'simplecov', '~> 0.9'
|
24
31
|
end
|