persondb-models 0.4.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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: d3da2b33fdafe18b96c185cc7917c19da383f99c
4
+ data.tar.gz: be15b5111437540510df731ad51315d97ed7de37
5
+ SHA512:
6
+ metadata.gz: 6d25360bbcfb330021ff1662838385e2b174fc61e0f2947e583e46b49e97b3977234f77f9d585f386aea4b6c853b18edbc5f57fde6619513ecbf070de360cc2d
7
+ data.tar.gz: a16843304349ee92544a26e01f26d8781dddc80f704afba593973732d9dc2b0c0d0bb56dad4df26dba77af5e6e193b9da637cb10092450cf1efb27ef386aa349
File without changes
@@ -0,0 +1,4 @@
1
+ ### 0.0.1 / 2014-03-05
2
+
3
+ * Everything is new. First release.
4
+
@@ -0,0 +1,17 @@
1
+ HISTORY.md
2
+ Manifest.txt
3
+ README.md
4
+ Rakefile
5
+ lib/persondb/models.rb
6
+ lib/persondb/models/forward.rb
7
+ lib/persondb/models/person.rb
8
+ lib/persondb/models/world/city.rb
9
+ lib/persondb/models/world/country.rb
10
+ lib/persondb/models/world/region.rb
11
+ lib/persondb/reader.rb
12
+ lib/persondb/schema.rb
13
+ lib/persondb/version.rb
14
+ test/data/players/south-america/br-brazil/players.txt
15
+ test/helper.rb
16
+ test/test_models.rb
17
+ test/test_reader.rb
@@ -0,0 +1,34 @@
1
+ # persondb-models
2
+
3
+ persondb-models gem - person.db schema 'n' models for easy (re)use
4
+
5
+ * home :: [github.com/persondb/person.db.models](https://github.com/persondb/person.db.models)
6
+ * bugs :: [github.com/persondb/person.db.models/issues](https://github.com/persondb/person.db.models/issues)
7
+ * gem :: [rubygems.org/gems/persondb-models](https://rubygems.org/gems/persondb-models)
8
+ * rdoc :: [rubydoc.info/gems/persondb-models](http://rubydoc.info/gems/persondb-models)
9
+
10
+ ## Usage
11
+
12
+ TBD
13
+
14
+ ## Alternatives
15
+
16
+ TBD
17
+
18
+
19
+ ## Real World Usage
20
+
21
+ [wine.db](https://github.com/openwine) - Used for Winemakers
22
+
23
+ [football.db](https://github.com/openfootball) - Used for Football Players (Goalies, Defenders, Midfielders, etc.)
24
+
25
+ [ski.db](https://github.com/opensport/ski.db) - Use for Alpine Ski Racers
26
+
27
+ [forumula1.db](https://github.com/opensport/formula1.db) - Used for Formula 1 Race Drivers
28
+
29
+
30
+
31
+ ## License
32
+
33
+ The `persondb-models` scripts are dedicated to the public domain.
34
+ Use it as you please with no restrictions whatsoever.
@@ -0,0 +1,31 @@
1
+ require 'hoe'
2
+ require './lib/persondb/version.rb'
3
+
4
+ Hoe.spec 'persondb-models' do
5
+
6
+ self.version = PersonDb::VERSION
7
+
8
+ self.summary = "persondb-models - person schema 'n' models for easy (re)use"
9
+ self.description = summary
10
+
11
+ self.urls = ['https://github.com/persondb/person.db.models']
12
+
13
+ self.author = 'Gerald Bauer'
14
+ self.email = 'opensport@googlegroups.com'
15
+
16
+ # switch extension to .markdown for gihub formatting
17
+ self.readme_file = 'README.md'
18
+ self.history_file = 'HISTORY.md'
19
+
20
+ self.extra_deps = [
21
+ ['worlddb-models'] ## get all (extra) dependencies via worlddb-models
22
+ ]
23
+
24
+ self.licenses = ['Public Domain']
25
+
26
+ self.spec_extras = {
27
+ required_ruby_version: '>= 1.9.2'
28
+ }
29
+
30
+ end
31
+
@@ -0,0 +1,71 @@
1
+ # encoding: utf-8
2
+
3
+ require 'logger'
4
+
5
+ # 3rd party gems / libs
6
+ require 'worlddb/models' # note: let worlddb pull in all 3rd party gems / libs (do NOT duplicate here)
7
+
8
+
9
+ ### our own code
10
+
11
+ require 'persondb/version' # let it always go first
12
+ require 'persondb/schema'
13
+
14
+ require 'persondb/models/forward'
15
+
16
+ require 'persondb/models/world/city'
17
+ require 'persondb/models/world/region'
18
+ require 'persondb/models/world/country'
19
+
20
+ require 'persondb/models/person'
21
+ require 'persondb/reader'
22
+
23
+
24
+
25
+ module PersonDb
26
+
27
+ def self.test_data_path
28
+ "#{root}/test/data"
29
+ end
30
+
31
+
32
+ def self.create
33
+ CreateDb.new.up
34
+
35
+ Model::Prop.create!( key: 'db.schema.person.version', value: VERSION )
36
+ end
37
+
38
+ def self.delete!
39
+ ## fix/todo: move into deleter class (see worlddb,sportdb etc.)
40
+ Model::Person.delete_all
41
+ end
42
+
43
+ def self.tables
44
+ ## fix/todo: move into stats class (see worlddb,sportdb etc.)
45
+ puts " #{Model::Person.count} persons"
46
+ end
47
+
48
+ def self.setup_in_memory_db
49
+ # Database Setup & Config
50
+
51
+ ActiveRecord::Base.logger = Logger.new( STDOUT )
52
+ ## ActiveRecord::Base.colorize_logging = false - no longer exists - check new api/config setting?
53
+
54
+ ## NB: every connect will create a new empty in memory db
55
+ ActiveRecord::Base.establish_connection(
56
+ adapter: 'sqlite3',
57
+ database: ':memory:' )
58
+
59
+ ## build schema
60
+ LogDb.create
61
+ ConfDb.create
62
+ TagDb.create
63
+ WorldDb.create
64
+ PersonDb.create
65
+ end # method setup_in_memory_db
66
+
67
+
68
+ end # module PersonDb
69
+
70
+ # say hello
71
+ puts PersonDb.banner if $DEBUG || (defined?($RUBYLIBS_DEBUG) && $RUBYLIBS_DEBUG)
@@ -0,0 +1,33 @@
1
+ ### forward references
2
+ ## require first to resolve circular references
3
+
4
+ module PersonDb
5
+ module Model
6
+
7
+ ## todo: why? why not use include WorldDb::Models here???
8
+ Continent = WorldDb::Model::Continent
9
+ Country = WorldDb::Model::Country
10
+ Region = WorldDb::Model::Region
11
+ City = WorldDb::Model::City
12
+
13
+ Tagging = TagDb::Model::Tagging
14
+ Tag = TagDb::Model::Tag
15
+
16
+ Prop = ConfDb::Model::Prop
17
+
18
+ class Person < ActiveRecord::Base ; end
19
+
20
+ end # module Model
21
+
22
+ ## note: for convenciene (and compatibility) add alias Models for Model namespace
23
+ ## e.g lets you use include PersonDb::Models
24
+ Models = Model
25
+
26
+ end # module PersonDb
27
+
28
+
29
+ module WorldDb
30
+ module Model
31
+ Person = PersonDb::Model::Person
32
+ end
33
+ end
@@ -0,0 +1,109 @@
1
+ # encoding: UTF-8
2
+
3
+ module PersonDb
4
+ module Model
5
+
6
+ class Person < ActiveRecord::Base
7
+
8
+ self.table_name = 'persons'
9
+
10
+ def title() name end # alias for name
11
+ def title=(value) self.name = value end # alias for name
12
+
13
+
14
+ def self.create_or_update_from_values( new_attributes, values )
15
+
16
+ ## fix: add/configure logger for ActiveRecord!!!
17
+ logger = LogKernel::Logger.root
18
+
19
+ ## check optional values
20
+ values.each_with_index do |value, index|
21
+ if value =~ /^[a-z]{2}$/ ## assume two-letter country key e.g. at,de,mx,etc.
22
+ value_country = Country.find_by_key!( value )
23
+ new_attributes[ :country_id ] = value_country.id
24
+ elsif value =~ /^[A-Z]{3}$/ ## assume three-letter code e.g. AUS, MAL, etc.
25
+ new_attributes[ :code ] = value
26
+
27
+ #### fix: use more generic/better date reader (allow more formats!!!)
28
+ elsif value =~ /^([0-9]{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s([0-9]{4})$/ ## assume birthday
29
+ value_date_str = '%02d/%s/%d' % [$1, $2, $3] ## move to matcher!!
30
+ value_date = Date.strptime( value_date_str, '%d/%b/%Y' ) ## %b - abbreviated month name (e.g. Jan,Feb, etc.)
31
+ logger.debug " birthday #{value_date_str} - #{value_date}"
32
+ new_attributes[ :born_at ] = value_date
33
+ ## todo: convert to date
34
+ else
35
+ ## todo: assume title2 ??
36
+ ## assume title2 if title2 is empty (not already in use)
37
+ ## and if it title2 contains at least two letter e.g. [a-zA-Z].*[a-zA-Z]
38
+ # issue warning: unknown type for value
39
+ logger.warn "unknown type for value >#{value}< - key #{new_attributes[:key]}"
40
+ end
41
+ end
42
+
43
+ ## quick hack: set nationality_id if not present to country_id
44
+ if new_attributes[ :nationality_id ].blank?
45
+ new_attributes[ :nationality_id ] = new_attributes[ :country_id ]
46
+ end
47
+
48
+
49
+ ####################################################
50
+ # title-ize / normal-ize names (titles/synonyms)
51
+
52
+ ##
53
+ ## make sure title and synonyms do NOT use all UPPERCASE
54
+ ## e.g. convert Neymar DA SILVA SANTOS to Neymar Da Sliva Santos etc.
55
+
56
+ ### fix: add auto camelcase/titlecase
57
+ ## move to textutils
58
+ ## make it an option for name to auto Camelcase/titlecase?
59
+ ## e.g. BONFIM COSTA SANTOS becomes
60
+ ## Bonfim Costa Santos etc.
61
+ ## fix: better move into person parser?
62
+ ## store all alt_names titleized!!!
63
+
64
+ raw_title = new_attributes[ :title ]
65
+ new_title = titleize( raw_title )
66
+ if raw_title != new_title
67
+ logger.debug " change person title/name to <#{new_title}> from >#{raw_title}<"
68
+ new_attributes[ :title ] = new_title
69
+ end
70
+
71
+ raw_synonyms = new_attributes[ :synonyms ]
72
+ if raw_synonyms.present?
73
+ new_synonyms = raw_synonyms.split('|').map { |value| titleize(value) }.join('|')
74
+
75
+ if raw_synonyms != new_synonyms
76
+ logger.debug " change person synonyms/alt_names to <#{new_synonyms}> from >#{raw_synonyms}<"
77
+ new_attributes[ :synonyms ] = new_synonyms
78
+ end
79
+ end
80
+
81
+
82
+
83
+ rec = Person.find_by_key( new_attributes[ :key ] )
84
+ if rec.present?
85
+ logger.debug "update Person #{rec.id}-#{rec.key}:"
86
+ else
87
+ logger.debug "create Person:"
88
+ rec = Person.new
89
+ end
90
+
91
+ logger.debug new_attributes.to_json
92
+
93
+ rec.update_attributes!( new_attributes )
94
+ end # create_or_update_from_values
95
+
96
+ private
97
+
98
+
99
+ def self.titleize( str ) # note: added as class-level method for self.create etc.
100
+ ## fix: for now works only with ASCII only
101
+ ## words 2 letters and ups
102
+ ## fix also allow words w/ quote e.g. O'Connor etc.
103
+ str.gsub(/\b[A-Z]{2,}\b/) { |match| match.capitalize }
104
+ end
105
+
106
+ end # class Person
107
+
108
+ end # module Model
109
+ end # module PersonDb
@@ -0,0 +1,10 @@
1
+ module WorldDb
2
+ module Model
3
+
4
+ class City
5
+ has_many :persons, class_name: 'PersonDb::Model::Person', foreign_key: 'city_id'
6
+ end # class City
7
+
8
+ end # module Model
9
+ end # module WorldDb
10
+
@@ -0,0 +1,10 @@
1
+ module WorldDb
2
+ module Model
3
+
4
+ class Country
5
+ has_many :persons, class_name: 'PersonDb::Model::Person', foreign_key: 'country_id'
6
+ end # class Country
7
+
8
+ end # module Model
9
+ end # module WorldDb
10
+
@@ -0,0 +1,10 @@
1
+ module WorldDb
2
+ module Model
3
+
4
+ class Region
5
+ has_many :persons, class_name: 'PersonDb::Model::Person', foreign_key: 'region_id'
6
+ end # class Region
7
+
8
+ end # module Model
9
+ end # module WorldDb
10
+
@@ -0,0 +1,52 @@
1
+ # encoding: utf-8
2
+
3
+
4
+ module PersonDb
5
+
6
+
7
+ class PersonReader
8
+
9
+ include LogUtils::Logging
10
+
11
+ ## make models available by default with namespace
12
+ # e.g. lets you use Usage instead of Model::Usage
13
+ include Models
14
+
15
+ def self.from_zip( zip_file, entry_path, more_attribs={} )
16
+ ## get text content from zip
17
+ entry = zip_file.find_entry( entry_path )
18
+
19
+ text = entry.get_input_stream().read()
20
+ text = text.force_encoding( Encoding::UTF_8 )
21
+
22
+ self.from_string( text, more_attribs )
23
+ end
24
+
25
+ def self.from_file( path, more_attribs={} )
26
+ ## note: assume/enfore utf-8 encoding (with or without BOM - byte order mark)
27
+ ## - see textutils/utils.rb
28
+ text = File.read_utf8( path )
29
+ self.from_string( text, more_attribs )
30
+ end
31
+
32
+ def self.from_string( text, more_attribs={} )
33
+ PersonReader.new( text, more_attribs )
34
+ end
35
+
36
+
37
+ def initialize( text, more_attribs={} )
38
+ ## todo/fix: how to add opts={} ???
39
+ @text = text
40
+ @more_attribs = more_attribs
41
+ end
42
+
43
+ def read()
44
+ reader = ValuesReader.from_string( @text, @more_attribs )
45
+
46
+ reader.each_line do |new_attributes, values|
47
+ Person.create_or_update_from_values( new_attributes, values )
48
+ end # each lines
49
+ end
50
+
51
+ end # class PersonReader
52
+ end # module PersonDb
@@ -0,0 +1,66 @@
1
+ # encoding: UTF-8
2
+
3
+ module PersonDb
4
+
5
+ class CreateDb
6
+
7
+ def up
8
+ ActiveRecord::Schema.define do
9
+
10
+ ###########
11
+ # use people ? instead of persons (person/persons makes it easier?)
12
+
13
+ create_table :persons do |t|
14
+ t.string :key, null: false # import/export key
15
+ t.string :name, null: false
16
+ t.string :synonyms # comma separated list of synonyms
17
+ ### fix: change to alt_names
18
+
19
+ t.string :code # three letter code (short title) e.g used for formula1 driver etc.
20
+
21
+
22
+ ## todo: add gender flag (male/female -man/lady how?)
23
+ t.date :born_at # optional date of birth (birthday)
24
+ ## todo: add country of birth might not be the same as nationality
25
+
26
+ t.references :city
27
+ t.references :region
28
+ t.references :country ## , null: false
29
+
30
+ t.references :nationality ## , null: false # by default assume same as country of birth (see above)
31
+ ## fix: add nationality2 n nationality3 too
32
+
33
+ t.timestamps
34
+ end
35
+
36
+
37
+ end # Schema.define
38
+ end # method up
39
+
40
+ end # class CreateDb
41
+
42
+ end # module PersonDb
43
+
44
+
45
+
46
+ =begin
47
+ # old (original) sportdb persons table
48
+ create_table :persons do |t| # use people ? instead of persons (person/persons makes it easier?)
49
+ t.string :key, null: false # import/export key
50
+ t.string :name, null: false
51
+ t.string :synonyms # comma separated list of synonyms
52
+ t.string :code # three letter code (short title)
53
+
54
+ ## todo: add gender flag (male/female -man/lady how?)
55
+ t.date :born_at # optional date of birth (birthday)
56
+ ## todo: add country of birth might not be the same as nationality
57
+
58
+ t.references :city
59
+ t.references :region
60
+ t.references :country, null: false
61
+
62
+ t.references :nationality, null: false # by default assume same as country of birth (see above)
63
+
64
+ t.timestamps
65
+ end
66
+ =end
@@ -0,0 +1,22 @@
1
+ # encoding: utf-8
2
+
3
+ module PersonDb
4
+
5
+ MAJOR = 0 ## todo: namespace inside version or something - why? why not??
6
+ MINOR = 4
7
+ PATCH = 2
8
+ VERSION = [MAJOR,MINOR,PATCH].join('.')
9
+
10
+ def self.version
11
+ VERSION
12
+ end
13
+
14
+ def self.banner
15
+ "persondb-models/#{VERSION} on Ruby #{RUBY_VERSION} (#{RUBY_RELEASE_DATE}) [#{RUBY_PLATFORM}]"
16
+ end
17
+
18
+ def self.root
19
+ "#{File.expand_path( File.dirname(File.dirname(File.dirname(__FILE__))) )}"
20
+ end
21
+
22
+ end # module PersonDb
@@ -0,0 +1,39 @@
1
+ ###
2
+ # NB: let official (player) shirt name go first (e.g. Neymar Jr)
3
+
4
+
5
+ ## GK / Goalkeepers
6
+
7
+ Jefferson|Jefferson DE OLIVEIRA GALVAO, 2 Jan 1983, 190
8
+ Júlio César|Júlio César SOARES DE ESPINDOLA, 3 Sep 1979, 186
9
+ D. Cavalieri|Diego CAVALIERI, 1 Dec 1982, 189
10
+
11
+
12
+ ## DF / Defenders
13
+
14
+ Dani Alves|Daniel ALVES DA SILVA, 6 May 1983, 172
15
+ T. Silva|Thiago SILVA|Thiago EMILIANO DA SILVA, 22 Sep 1984, 183
16
+ David Luiz, David Luiz MOREIRA MARINHO, 22 Apr 1987, 189
17
+ Marcelo|Marcelo VIEIRA DA SILVA JUNIOR, 12 May 1988, 174
18
+ Dante|Dante BONFIM COSTA SANTOS, 18 Oct 1983, 188
19
+ Filipe Luís|Filipe Luís KASMIRSKI, 9 Aug 1985, 182
20
+ Réver|Réver Humberto ALVES ARAUJO, 4 Jan 1985, 192
21
+
22
+ ## MF / Midfielders
23
+
24
+ Fernando|Fernando Lucas MARTINS, 3 Mar 1992, 175
25
+ Lucas|Lucas RODRIGUES MOURA SILVA, 13 Aug 1992, 173
26
+ Hernanes|Anderson Hernanes DE CARVALHO VIANA LIMA, 29 May 1985, 180
27
+ Oscar|Oscar DOS SANTOS EMBOABA JUNIOR, 9 Sep 1991, 180
28
+ Jean|Jean Raphael VANDERLEI MOREIRA, 24 Jun 1986, 170
29
+ L. Gustavo|Luiz Gustavo|Luiz Gustavo DIAS, 23 Jul 1987, 186
30
+ Paulinho|José Paulo BEZERRA MACIEL JUNIOR, 25 Jul 1988, 182
31
+ Bernard|Bernard ANICIO CALDEIRA DUARTE, 8 Sep 1992, 164
32
+ Jádson|Jádson RODRIGUES, 5 Oct 1983, 169
33
+
34
+ ## FW / Forwards
35
+
36
+ Fred|Frederico CHAVES GUEDES, 3 Oct 1983, 185
37
+ Neymar Jr|Neymar|Neymar DA SILVA SANTOS JUNIOR, 5 Feb 1992, 174
38
+ Hulk|Givanildo VIEIRA DE SOUSA, 25 Jul 1986, 180
39
+ Jô|João Alves de Assis Silva, 20 Mar 1987
@@ -0,0 +1,28 @@
1
+ # encoding: utf-8
2
+
3
+ ## $:.unshift(File.dirname(__FILE__))
4
+
5
+ ## minitest setup
6
+ require 'minitest/autorun'
7
+
8
+ # our own code
9
+
10
+ require 'persondb/models'
11
+
12
+
13
+ ################
14
+ # shortcuts
15
+ Country = WorldDb::Model::Country
16
+ Region = WorldDb::Model::Region
17
+ City = WorldDb::Model::City
18
+
19
+ ## todo: get all models aliases (e.g. from console script)
20
+
21
+ Person = PersonDb::Model::Person
22
+ PersonReader = PersonDb::PersonReader
23
+
24
+
25
+ ############
26
+ # setup
27
+ PersonDb.setup_in_memory_db
28
+
@@ -0,0 +1,39 @@
1
+ # encoding: utf-8
2
+
3
+
4
+ require 'helper'
5
+
6
+
7
+ class TestModels < MiniTest::Test
8
+
9
+ def setup # runs before every test
10
+ PersonDb.delete! # always clean-out tables
11
+ WorldDb.delete!
12
+ add_world
13
+ end
14
+
15
+ def add_world
16
+ ## add some counties
17
+ at = Country.create!( key: 'at', title: 'Austria', code: 'AUT', pop: 0, area: 0 )
18
+ n = Region.create!( key: 'n', title: 'Niederösterreich', country_id: at.id )
19
+ feuersbrunn = City.create!( key: 'feuersbrunn', title: 'Feuersbrunn', country_id: at.id, region_id: n.id )
20
+ end
21
+
22
+
23
+ def test_worlddb_assocs
24
+ at = Country.find_by_key!( 'at' )
25
+ n = Region.find_by_key!( 'n' )
26
+ feuersbrunn = City.find_by_key!( 'feuersbrunn' )
27
+
28
+ assert_equal 0, at.persons.count
29
+ assert_equal 0, n.persons.count
30
+ assert_equal 0, feuersbrunn.persons.count
31
+ end
32
+
33
+ def test_count
34
+ assert_equal 0, Person.count
35
+
36
+ PersonDb.tables # print stats
37
+ end
38
+
39
+ end # class TestModels
@@ -0,0 +1,36 @@
1
+ # encoding: utf-8
2
+
3
+ require 'helper'
4
+
5
+
6
+ class TestReader < MiniTest::Test
7
+
8
+ def setup # runs before every test
9
+ PersonDb.delete! # always clean-out tables
10
+ WorldDb.delete!
11
+ add_world
12
+ end
13
+
14
+ def add_world
15
+ ## add some counties
16
+ Country.create!( key: 'br', title: 'Brazil', code: 'BRA', pop: 0, area: 0 )
17
+ end
18
+
19
+ def test_read
20
+ br = Country.find_by_key!( 'br' )
21
+
22
+ path = "#{PersonDb.test_data_path}/players/south-america/br-brazil/players.txt"
23
+ reader = PersonReader.from_file( path, country_id: br.id )
24
+ reader.read()
25
+
26
+ assert_equal 23, Person.count
27
+ assert_equal 23, br.persons.count
28
+
29
+ jefferson = Person.find_by_key!( 'jefferson' )
30
+ assert_equal 'Jefferson De Oliveira Galvao', jefferson.synonyms
31
+ ## todo: add more asserts - use assert_persons ?
32
+
33
+ end
34
+
35
+ end # class TestReader
36
+
metadata ADDED
@@ -0,0 +1,110 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: persondb-models
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.4.2
5
+ platform: ruby
6
+ authors:
7
+ - Gerald Bauer
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-12-06 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: worlddb-models
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rdoc
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '4.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '4.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: hoe
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.13'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.13'
55
+ description: persondb-models - person schema 'n' models for easy (re)use
56
+ email: opensport@googlegroups.com
57
+ executables: []
58
+ extensions: []
59
+ extra_rdoc_files:
60
+ - HISTORY.md
61
+ - Manifest.txt
62
+ - README.md
63
+ files:
64
+ - ".gemtest"
65
+ - HISTORY.md
66
+ - Manifest.txt
67
+ - README.md
68
+ - Rakefile
69
+ - lib/persondb/models.rb
70
+ - lib/persondb/models/forward.rb
71
+ - lib/persondb/models/person.rb
72
+ - lib/persondb/models/world/city.rb
73
+ - lib/persondb/models/world/country.rb
74
+ - lib/persondb/models/world/region.rb
75
+ - lib/persondb/reader.rb
76
+ - lib/persondb/schema.rb
77
+ - lib/persondb/version.rb
78
+ - test/data/players/south-america/br-brazil/players.txt
79
+ - test/helper.rb
80
+ - test/test_models.rb
81
+ - test/test_reader.rb
82
+ homepage: https://github.com/persondb/person.db.models
83
+ licenses:
84
+ - Public Domain
85
+ metadata: {}
86
+ post_install_message:
87
+ rdoc_options:
88
+ - "--main"
89
+ - README.md
90
+ require_paths:
91
+ - lib
92
+ required_ruby_version: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: 1.9.2
97
+ required_rubygems_version: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - ">="
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ requirements: []
103
+ rubyforge_project:
104
+ rubygems_version: 2.4.2
105
+ signing_key:
106
+ specification_version: 4
107
+ summary: persondb-models - person schema 'n' models for easy (re)use
108
+ test_files:
109
+ - test/test_models.rb
110
+ - test/test_reader.rb