tagutils 0.2.0 → 0.2.1
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/Manifest.txt +15 -7
- data/README.md +25 -0
- data/lib/tagutils.rb +28 -71
- data/lib/tagutils/categories.rb +31 -0
- data/lib/tagutils/categories/active_record.rb +27 -0
- data/lib/tagutils/{models → categories/models}/categorization.rb +0 -0
- data/lib/tagutils/{models → categories/models}/category.rb +9 -13
- data/lib/tagutils/categories/models/category_comp.rb +20 -0
- data/lib/tagutils/{schema_categories.rb → categories/schema.rb} +0 -0
- data/lib/tagutils/tags.rb +34 -0
- data/lib/tagutils/{active_record.rb → tags/active_record.rb} +0 -19
- data/lib/tagutils/{models → tags/models}/tag.rb +10 -15
- data/lib/tagutils/tags/models/tag_comp.rb +20 -0
- data/lib/tagutils/{models → tags/models}/tagging.rb +0 -0
- data/lib/tagutils/tags/readers/tag.rb +100 -0
- data/lib/tagutils/{schema_tags.rb → tags/schema.rb} +0 -0
- data/lib/tagutils/version.rb +1 -1
- data/test/helper.rb +3 -1
- data/test/tags.1.yml +35 -0
- data/test/test_tag_reader.rb +23 -0
- metadata +26 -17
data/Manifest.txt
CHANGED
@@ -3,13 +3,21 @@ Manifest.txt
|
|
3
3
|
README.md
|
4
4
|
Rakefile
|
5
5
|
lib/tagutils.rb
|
6
|
-
lib/tagutils/
|
7
|
-
lib/tagutils/
|
8
|
-
lib/tagutils/models/
|
9
|
-
lib/tagutils/models/
|
10
|
-
lib/tagutils/models/
|
11
|
-
lib/tagutils/
|
12
|
-
lib/tagutils/
|
6
|
+
lib/tagutils/categories.rb
|
7
|
+
lib/tagutils/categories/active_record.rb
|
8
|
+
lib/tagutils/categories/models/categorization.rb
|
9
|
+
lib/tagutils/categories/models/category.rb
|
10
|
+
lib/tagutils/categories/models/category_comp.rb
|
11
|
+
lib/tagutils/categories/schema.rb
|
12
|
+
lib/tagutils/tags.rb
|
13
|
+
lib/tagutils/tags/active_record.rb
|
14
|
+
lib/tagutils/tags/models/tag.rb
|
15
|
+
lib/tagutils/tags/models/tag_comp.rb
|
16
|
+
lib/tagutils/tags/models/tagging.rb
|
17
|
+
lib/tagutils/tags/readers/tag.rb
|
18
|
+
lib/tagutils/tags/schema.rb
|
13
19
|
lib/tagutils/version.rb
|
14
20
|
test/helper.rb
|
21
|
+
test/tags.1.yml
|
15
22
|
test/test_models.rb
|
23
|
+
test/test_tag_reader.rb
|
data/README.md
CHANGED
@@ -67,6 +67,31 @@ Movie.with_category( 'doc' )
|
|
67
67
|
# e.g. scope :with_category, ->(category_key){ joins(:categories).where('categories.key' => category_key) }
|
68
68
|
~~~
|
69
69
|
|
70
|
+
### Reader
|
71
|
+
|
72
|
+
The `TagReader` lets you read plain text fixtures (data sets). Example:
|
73
|
+
|
74
|
+
~~~
|
75
|
+
tags.1.yml:
|
76
|
+
-----------
|
77
|
+
|
78
|
+
# organizations
|
79
|
+
|
80
|
+
orgs: un, g5, g8, g20, eu, commonwealth, mercosur, nafta
|
81
|
+
football: fifa, uefa, afc, ofc, caf, csf, concacaf
|
82
|
+
|
83
|
+
# national regions
|
84
|
+
|
85
|
+
brasil: s|South, se|Southeast, co|Centerwest, ne|Northeast, n|North
|
86
|
+
~~~
|
87
|
+
|
88
|
+
To read the tags use:
|
89
|
+
|
90
|
+
~~~
|
91
|
+
TagReader.new( <include_path>).read( `tags.1` )
|
92
|
+
~~~
|
93
|
+
|
94
|
+
|
70
95
|
|
71
96
|
## Real World Usage
|
72
97
|
|
data/lib/tagutils.rb
CHANGED
@@ -2,24 +2,44 @@
|
|
2
2
|
# 3rd party gems / libs
|
3
3
|
|
4
4
|
require 'active_record' ## todo: add sqlite3? etc.
|
5
|
+
|
6
|
+
require 'props'
|
7
|
+
require 'props/db' # note: also use ConfDb (ConfDb::Model::Prop etc.)
|
5
8
|
require 'logutils'
|
9
|
+
require 'textutils'
|
10
|
+
|
11
|
+
#########
|
12
|
+
# fix/todo:
|
13
|
+
# move props/db - Props.create_from_fixture! to textutils/db
|
14
|
+
# require 'textutils/db'
|
15
|
+
|
16
|
+
#######################
|
17
|
+
# fix/remove once removed from HashReaderV2
|
18
|
+
|
19
|
+
module WorldDb
|
20
|
+
module Model
|
21
|
+
Prop = ConfDb::Model::Prop
|
22
|
+
end
|
23
|
+
Models = Model
|
24
|
+
end
|
25
|
+
|
6
26
|
|
7
27
|
|
8
28
|
# our own code
|
9
29
|
|
10
30
|
require 'tagutils/version' # let it always go first
|
11
31
|
|
12
|
-
require 'tagutils/
|
13
|
-
require 'tagutils/
|
14
|
-
require 'tagutils/models/tagging'
|
15
|
-
|
16
|
-
require 'tagutils/schema_categories'
|
17
|
-
require 'tagutils/models/category'
|
18
|
-
require 'tagutils/models/categorization'
|
32
|
+
require 'tagutils/tags'
|
33
|
+
require 'tagutils/categories'
|
19
34
|
|
20
35
|
|
21
|
-
require 'tagutils/active_record' # -- adds has_many_tags, has_many_categories class macros
|
22
36
|
|
37
|
+
####
|
38
|
+
# use shared/common module/namespace ?
|
39
|
+
# e.g.
|
40
|
+
# - ClassificationDb, ClassiDb ??
|
41
|
+
# - TaxonomyDb, TaxonDb, TaxyDb ???
|
42
|
+
# - TopicDb, KeywordDb ?? -- why? why not??
|
23
43
|
|
24
44
|
module TagUtils
|
25
45
|
|
@@ -34,67 +54,4 @@ module TagUtils
|
|
34
54
|
end # module TagUtils
|
35
55
|
|
36
56
|
|
37
|
-
|
38
|
-
module TagDb
|
39
|
-
|
40
|
-
#####
|
41
|
-
# add convenience module alias in plural
|
42
|
-
# e.g. lets you use include TagDb::Models
|
43
|
-
Models = Model
|
44
|
-
|
45
|
-
def self.create
|
46
|
-
CreateDb.new.up
|
47
|
-
## WorldDb::Model::Prop.create!( key: 'db.schema.world.version', value: VERSION )
|
48
|
-
end
|
49
|
-
|
50
|
-
# delete ALL records (use with care!)
|
51
|
-
def self.delete!
|
52
|
-
puts '*** deleting tag/tagging table records/data...'
|
53
|
-
Model::Tagging.delete_all
|
54
|
-
Model::Tag.delete_all
|
55
|
-
end
|
56
|
-
|
57
|
-
def self.tables
|
58
|
-
puts "#{Model::Tag.count} tags"
|
59
|
-
puts "#{Model::Tagging.count} taggings"
|
60
|
-
end
|
61
|
-
|
62
|
-
end # module TagDb
|
63
|
-
|
64
|
-
|
65
|
-
module CategoryDb
|
66
|
-
#####
|
67
|
-
# add convenience module alias in plural
|
68
|
-
# e.g. lets you use include CategoryDb::Models
|
69
|
-
Models = Model
|
70
|
-
|
71
|
-
def self.create
|
72
|
-
CreateDb.new.up
|
73
|
-
## WorldDb::Model::Prop.create!( key: 'db.schema.world.version', value: VERSION )
|
74
|
-
end
|
75
|
-
|
76
|
-
# delete ALL records (use with care!)
|
77
|
-
def self.delete!
|
78
|
-
puts '*** deleting category/categorization table records/data...'
|
79
|
-
Model::Categorization.delete_all
|
80
|
-
Model::Category.delete_all
|
81
|
-
end
|
82
|
-
|
83
|
-
def self.tables
|
84
|
-
puts "#{Model::Category.count} categories"
|
85
|
-
puts "#{Model::Categorization.count} categorizations"
|
86
|
-
end
|
87
|
-
end # module CategoryDb
|
88
|
-
|
89
|
-
CatDb = CategoryDb # for conveniene add alias for CatDb
|
90
|
-
|
91
|
-
|
92
|
-
####
|
93
|
-
# use shared/common module/namespace ?
|
94
|
-
# e.g.
|
95
|
-
# - ClassificationDb, ClassiDb ??
|
96
|
-
# - TaxonomyDb, TaxonDb, TaxyDb ???
|
97
|
-
# - TopicDb, KeywordDb ?? -- why? why not??
|
98
|
-
|
99
|
-
|
100
57
|
puts TagUtils.banner # say hello
|
@@ -0,0 +1,31 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
require 'tagutils/categories/schema'
|
4
|
+
require 'tagutils/categories/models/category'
|
5
|
+
require 'tagutils/categories/models/category_comp'
|
6
|
+
require 'tagutils/categories/models/categorization'
|
7
|
+
|
8
|
+
require 'tagutils/categories/active_record' # -- adds has_many_tags, has_many_categories class macros
|
9
|
+
|
10
|
+
|
11
|
+
module CategoryDb
|
12
|
+
VERSION = TagUtils::VERSION
|
13
|
+
|
14
|
+
def self.create
|
15
|
+
CreateDb.new.up
|
16
|
+
ConfDb::Model::Prop.create!( key: 'db.schema.category.version', value: VERSION )
|
17
|
+
end
|
18
|
+
|
19
|
+
# delete ALL records (use with care!)
|
20
|
+
def self.delete!
|
21
|
+
puts '*** deleting category/categorization table records/data...'
|
22
|
+
Model::Categorization.delete_all
|
23
|
+
Model::Category.delete_all
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.tables
|
27
|
+
puts " #{Model::Category.count} categories"
|
28
|
+
puts " #{Model::Categorization.count} categorizations"
|
29
|
+
end
|
30
|
+
end # module CategoryDb
|
31
|
+
|
@@ -0,0 +1,27 @@
|
|
1
|
+
|
2
|
+
module CategoryDb
|
3
|
+
module ClassMacros
|
4
|
+
def has_many_categories( opts={} )
|
5
|
+
puts " [CategoryDb.has_many_categories] adding categorizations n category has_many assocs to model >#{name}<"
|
6
|
+
|
7
|
+
has_many :categorizations, class_name: 'CategoryDb::Model::Categorization', :as => :categorizable
|
8
|
+
has_many :categories, class_name: 'CategoryDb::Model::Category', :through => :categorizations
|
9
|
+
|
10
|
+
### check: use category_name instead of category_key ???
|
11
|
+
scope :with_category, ->(category_key){ joins(:categories).where('categories.key' => category_key) }
|
12
|
+
end
|
13
|
+
|
14
|
+
## same as scope above
|
15
|
+
## def with_category( category_key )
|
16
|
+
## joins(:categories).where( 'categories.key' => category_key )
|
17
|
+
## end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
|
22
|
+
module ActiveRecord
|
23
|
+
class Base
|
24
|
+
extend CategoryDb::ClassMacros
|
25
|
+
end # class Base
|
26
|
+
end # module ActiveRecord
|
27
|
+
|
File without changes
|
@@ -23,22 +23,18 @@ class Category < ActiveRecord::Base
|
|
23
23
|
before_save :on_before_save
|
24
24
|
|
25
25
|
def on_before_save
|
26
|
-
# replace space with dash e.g. north america becomes
|
27
|
-
self.slug = key.gsub( ' ', '
|
26
|
+
# replace space with dash e.g. north america becomes north_america and so on
|
27
|
+
self.slug = key.gsub( ' ', '_' )
|
28
28
|
end
|
29
29
|
|
30
|
-
|
31
|
-
############################################################################
|
32
|
-
# alias for name (remove! add depreciated api call) ?? why? why not??
|
33
|
-
|
34
|
-
def title() name; end
|
35
|
-
def title=(value) self.name = value; end
|
36
|
-
|
37
|
-
scope :by_title, -> { order( 'name desc' ) } ### depreciated ??? - use by_name
|
30
|
+
end # class Category
|
38
31
|
|
39
32
|
|
40
|
-
end
|
33
|
+
end # module Model
|
41
34
|
|
35
|
+
#####
|
36
|
+
# add convenience module alias in plural
|
37
|
+
# e.g. lets you use include CategoryDb::Models
|
38
|
+
Models = Model
|
42
39
|
|
43
|
-
|
44
|
-
end # module Model
|
40
|
+
end # module CategoryDb
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module CategoryDb
|
4
|
+
module Model
|
5
|
+
|
6
|
+
class Category
|
7
|
+
|
8
|
+
##############################################
|
9
|
+
# alias for name (depreciated api calls)
|
10
|
+
|
11
|
+
def title() name; end
|
12
|
+
def title=(value) self.name = value; end
|
13
|
+
|
14
|
+
scope :by_title, -> { order( 'name desc' ) }
|
15
|
+
|
16
|
+
end # class Category
|
17
|
+
|
18
|
+
|
19
|
+
end # module CategoryDb
|
20
|
+
end # module Model
|
File without changes
|
@@ -0,0 +1,34 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
require 'tagutils/tags/schema'
|
4
|
+
require 'tagutils/tags/models/tag'
|
5
|
+
require 'tagutils/tags/models/tag_comp'
|
6
|
+
require 'tagutils/tags/models/tagging'
|
7
|
+
|
8
|
+
require 'tagutils/tags/active_record' # -- adds has_many_tags, has_many_categories class macros
|
9
|
+
require 'tagutils/tags/readers/tag'
|
10
|
+
|
11
|
+
|
12
|
+
|
13
|
+
module TagDb
|
14
|
+
VERSION = TagUtils::VERSION
|
15
|
+
|
16
|
+
def self.create
|
17
|
+
CreateDb.new.up
|
18
|
+
ConfDb::Model::Prop.create!( key: 'db.schema.tag.version', value: VERSION )
|
19
|
+
end
|
20
|
+
|
21
|
+
# delete ALL records (use with care!)
|
22
|
+
def self.delete!
|
23
|
+
puts '*** deleting tag/tagging table records/data...'
|
24
|
+
Model::Tagging.delete_all
|
25
|
+
Model::Tag.delete_all
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.tables
|
29
|
+
puts " #{Model::Tag.count} tags"
|
30
|
+
puts " #{Model::Tagging.count} taggings"
|
31
|
+
end
|
32
|
+
|
33
|
+
end # module TagDb
|
34
|
+
|
@@ -19,30 +19,11 @@ module TagDb
|
|
19
19
|
end
|
20
20
|
|
21
21
|
|
22
|
-
module CategoryDb
|
23
|
-
module ClassMacros
|
24
|
-
def has_many_categories( opts={} )
|
25
|
-
puts " [CategoryDb.has_many_categories] adding categorizations n category has_many assocs to model >#{name}<"
|
26
|
-
|
27
|
-
has_many :categorizations, class_name: 'CategoryDb::Model::Categorization', :as => :categorizable
|
28
|
-
has_many :categories, class_name: 'CategoryDb::Model::Category', :through => :categorizations
|
29
|
-
|
30
|
-
### check: use category_name instead of category_key ???
|
31
|
-
scope :with_category, ->(category_key){ joins(:categories).where('categories.key' => category_key) }
|
32
|
-
end
|
33
|
-
|
34
|
-
## same as scope above
|
35
|
-
## def with_category( category_key )
|
36
|
-
## joins(:categories).where( 'categories.key' => category_key )
|
37
|
-
## end
|
38
|
-
end
|
39
|
-
end
|
40
22
|
|
41
23
|
|
42
24
|
module ActiveRecord
|
43
25
|
class Base
|
44
26
|
extend TagDb::ClassMacros
|
45
|
-
extend CategoryDb::ClassMacros
|
46
27
|
end # class Base
|
47
28
|
end # module ActiveRecord
|
48
29
|
|
@@ -20,25 +20,20 @@ class Tag < ActiveRecord::Base
|
|
20
20
|
before_save :on_before_save
|
21
21
|
|
22
22
|
def on_before_save
|
23
|
-
# replace space with dash e.g. north america becomes
|
24
|
-
self.slug = key.gsub( ' ', '
|
25
|
-
|
23
|
+
# replace space with dash e.g. north america becomes north_america and so on
|
24
|
+
self.slug = key.gsub( ' ', '_' )
|
25
|
+
|
26
26
|
## if name is empty auto fill w/ key
|
27
27
|
self.name = key if name.blank?
|
28
28
|
end
|
29
29
|
|
30
|
-
|
31
|
-
############################################################################
|
32
|
-
# alias for name (remove! add depreciated api call) ?? why? why not??
|
33
|
-
|
34
|
-
def title() name; end
|
35
|
-
def title=(value) self.name = value; end
|
36
|
-
|
37
|
-
scope :by_title, -> { order( 'name desc' ) } ### depreciated ??? - use by_name
|
38
|
-
|
39
|
-
|
40
30
|
end # class Tag
|
41
31
|
|
32
|
+
end # module Model
|
33
|
+
|
34
|
+
#####
|
35
|
+
# add convenience module alias in plural
|
36
|
+
# e.g. lets you use include TagDb::Models
|
37
|
+
Models = Model
|
42
38
|
|
43
|
-
|
44
|
-
end # module Model
|
39
|
+
end # module TagDb
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module TagDb
|
4
|
+
module Model
|
5
|
+
|
6
|
+
class Tag
|
7
|
+
|
8
|
+
##################################################
|
9
|
+
# alias for name (depreciated api calls)
|
10
|
+
|
11
|
+
def title() name; end
|
12
|
+
def title=(value) self.name = value; end
|
13
|
+
|
14
|
+
scope :by_title, -> { order( 'name desc' ) }
|
15
|
+
|
16
|
+
end # class Tag
|
17
|
+
|
18
|
+
|
19
|
+
end # module TagDb
|
20
|
+
end # module Model
|
File without changes
|
@@ -0,0 +1,100 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
### use TagUtils - why? why not??
|
4
|
+
module TagDb
|
5
|
+
|
6
|
+
|
7
|
+
class TagReader
|
8
|
+
|
9
|
+
include LogUtils::Logging
|
10
|
+
|
11
|
+
## make models available by default with namespace
|
12
|
+
# e.g. lets you use Tag instead of Model::Tag
|
13
|
+
include Models
|
14
|
+
|
15
|
+
## value helpers e.g. is_year?, is_taglist? etc.
|
16
|
+
include TextUtils::ValueHelper
|
17
|
+
|
18
|
+
|
19
|
+
attr_reader :include_path
|
20
|
+
|
21
|
+
def strict?() @strict == true; end
|
22
|
+
|
23
|
+
def initialize( include_path, opts = {} )
|
24
|
+
|
25
|
+
@include_path = include_path
|
26
|
+
|
27
|
+
## option: for now issue warning on update, that is, if key/record (country,region,city) already exists
|
28
|
+
@strict = opts[:strict].present? ? true : false
|
29
|
+
end
|
30
|
+
|
31
|
+
|
32
|
+
def read( name )
|
33
|
+
## check for grade in name e.g. tag.1, tag.2 etc.
|
34
|
+
|
35
|
+
if name =~ /^tag.*\.(\d)$/
|
36
|
+
read_worker( name, :grade => $1.to_i )
|
37
|
+
else
|
38
|
+
read_worker( name )
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
|
43
|
+
def read_worker( name, more_attribs={} )
|
44
|
+
|
45
|
+
reader = HashReaderV2.new( name, include_path )
|
46
|
+
|
47
|
+
grade = 1
|
48
|
+
|
49
|
+
if more_attribs[:grade].present?
|
50
|
+
grade = more_attribs[:grade].to_i
|
51
|
+
end
|
52
|
+
|
53
|
+
reader.each do |key, value|
|
54
|
+
|
55
|
+
### fix/todo: move to Tag.read method for reuse !!!!
|
56
|
+
|
57
|
+
|
58
|
+
### split value by comma (e.g. northern america,southern america, etc.)
|
59
|
+
logger.debug "adding grade #{grade} tags >>#{key}<< >>#{value}<<..."
|
60
|
+
tag_pairs = value.split(',')
|
61
|
+
tag_pairs.each do |pair|
|
62
|
+
## split key|name
|
63
|
+
values = pair.split('|')
|
64
|
+
|
65
|
+
key = values[0]
|
66
|
+
### remove (optional comment) from key (e.g. carribean (islands))
|
67
|
+
key = key.gsub( /\(.+\)/, '' )
|
68
|
+
## remove leading n trailing space
|
69
|
+
key = key.strip
|
70
|
+
|
71
|
+
name = values[1] || '' # nb: name might be empty/missing
|
72
|
+
name = name.strip
|
73
|
+
|
74
|
+
tag_attribs = {}
|
75
|
+
|
76
|
+
## check if it exists
|
77
|
+
## todo/fix: add country_id for lookup?
|
78
|
+
tag = Tag.find_by_key( key )
|
79
|
+
if tag.present?
|
80
|
+
logger.debug "update tag #{tag.id}-#{tag.key}:"
|
81
|
+
else
|
82
|
+
logger.debug "create tag:"
|
83
|
+
tag = Tag.new
|
84
|
+
tag_attribs[ :key ] = key
|
85
|
+
end
|
86
|
+
|
87
|
+
tag_attribs[ :name ] = name
|
88
|
+
tag_attribs[ :grade ] = grade
|
89
|
+
|
90
|
+
logger.debug tag_attribs.to_json
|
91
|
+
|
92
|
+
tag.update_attributes!( tag_attribs )
|
93
|
+
end
|
94
|
+
end # each key,value
|
95
|
+
|
96
|
+
end # method read_worker
|
97
|
+
|
98
|
+
|
99
|
+
end # class TagReader
|
100
|
+
end # module TagDb
|
File without changes
|
data/lib/tagutils/version.rb
CHANGED
data/test/helper.rb
CHANGED
@@ -20,6 +20,7 @@ require 'logger'
|
|
20
20
|
|
21
21
|
require 'active_record'
|
22
22
|
|
23
|
+
|
23
24
|
# our own code
|
24
25
|
|
25
26
|
require 'tagutils'
|
@@ -78,10 +79,11 @@ def setup_in_memory_db
|
|
78
79
|
## build schema
|
79
80
|
|
80
81
|
LogDb.create
|
82
|
+
ConfDb.create
|
83
|
+
|
81
84
|
TagDb.create
|
82
85
|
CategoryDb.create
|
83
86
|
CreateMovieDb.new.up
|
84
|
-
|
85
87
|
end
|
86
88
|
|
87
89
|
|
data/test/tags.1.yml
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
### setup some grade 1 tags
|
2
|
+
|
3
|
+
## some tags
|
4
|
+
|
5
|
+
continents: africa, america, asia, europe, oceania
|
6
|
+
|
7
|
+
####################
|
8
|
+
# geo regions
|
9
|
+
africa: northern africa, western africa, central africa, eastern africa, southern africa
|
10
|
+
|
11
|
+
americas: north america, south america, central america, caribbean (islands)
|
12
|
+
|
13
|
+
## check if yaml can handle key w/ space??
|
14
|
+
south_america: andean states, southern cone
|
15
|
+
|
16
|
+
europe: northern europe, southern europe, western europe, central europe, eastern europe, southeastern europe
|
17
|
+
|
18
|
+
## more regions
|
19
|
+
europe2: baltic (states), scandinavia, nordic (countries), balkans
|
20
|
+
|
21
|
+
|
22
|
+
## get used for more than one continent
|
23
|
+
more: middle east, indian ocean, atlantic ocean
|
24
|
+
|
25
|
+
# orgs
|
26
|
+
|
27
|
+
orgs: un, g5, g8, g20, eu, commonwealth, mercosur, nafta
|
28
|
+
football: fifa, uefa, afc, ofc, caf, csf, concacaf
|
29
|
+
|
30
|
+
europe3: benelux, euro, schengen
|
31
|
+
|
32
|
+
misc: microstate
|
33
|
+
|
34
|
+
# national regions
|
35
|
+
brasil: s|South, se|Southeast, co|Centerwest, ne|Northeast, n|North
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'helper'
|
4
|
+
|
5
|
+
class TestTagReader < MiniTest::Unit::TestCase
|
6
|
+
|
7
|
+
def setup
|
8
|
+
TagDb.delete!
|
9
|
+
CategoryDb.delete!
|
10
|
+
|
11
|
+
Movie.delete_all
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_read
|
15
|
+
include_path = "#{TagUtils.root}/test"
|
16
|
+
puts "[TestTagReader.test_read] include_path: #{include_path}"
|
17
|
+
|
18
|
+
reader = TagDb::TagReader.new( include_path )
|
19
|
+
reader.read( 'tags.1' )
|
20
|
+
end
|
21
|
+
|
22
|
+
|
23
|
+
end # class TestTagReader
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tagutils
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-03-
|
12
|
+
date: 2014-03-18 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activerecord
|
16
|
-
requirement: &
|
16
|
+
requirement: &86092400 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *86092400
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: logutils
|
27
|
-
requirement: &
|
27
|
+
requirement: &86091990 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0.6'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *86091990
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rdoc
|
38
|
-
requirement: &
|
38
|
+
requirement: &86091650 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '3.10'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *86091650
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: hoe
|
49
|
-
requirement: &
|
49
|
+
requirement: &86091280 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
@@ -54,7 +54,7 @@ dependencies:
|
|
54
54
|
version: '3.3'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *86091280
|
58
58
|
description: tagutils - tag utilities (tag, taggings, tag list, etc.)
|
59
59
|
email: openmundi@googlegroups.com
|
60
60
|
executables: []
|
@@ -67,16 +67,24 @@ files:
|
|
67
67
|
- README.md
|
68
68
|
- Rakefile
|
69
69
|
- lib/tagutils.rb
|
70
|
-
- lib/tagutils/
|
71
|
-
- lib/tagutils/
|
72
|
-
- lib/tagutils/models/
|
73
|
-
- lib/tagutils/models/
|
74
|
-
- lib/tagutils/models/
|
75
|
-
- lib/tagutils/
|
76
|
-
- lib/tagutils/
|
70
|
+
- lib/tagutils/categories.rb
|
71
|
+
- lib/tagutils/categories/active_record.rb
|
72
|
+
- lib/tagutils/categories/models/categorization.rb
|
73
|
+
- lib/tagutils/categories/models/category.rb
|
74
|
+
- lib/tagutils/categories/models/category_comp.rb
|
75
|
+
- lib/tagutils/categories/schema.rb
|
76
|
+
- lib/tagutils/tags.rb
|
77
|
+
- lib/tagutils/tags/active_record.rb
|
78
|
+
- lib/tagutils/tags/models/tag.rb
|
79
|
+
- lib/tagutils/tags/models/tag_comp.rb
|
80
|
+
- lib/tagutils/tags/models/tagging.rb
|
81
|
+
- lib/tagutils/tags/readers/tag.rb
|
82
|
+
- lib/tagutils/tags/schema.rb
|
77
83
|
- lib/tagutils/version.rb
|
78
84
|
- test/helper.rb
|
85
|
+
- test/tags.1.yml
|
79
86
|
- test/test_models.rb
|
87
|
+
- test/test_tag_reader.rb
|
80
88
|
- .gemtest
|
81
89
|
homepage: https://github.com/rubylibs/tagutils
|
82
90
|
licenses:
|
@@ -107,3 +115,4 @@ specification_version: 3
|
|
107
115
|
summary: tagutils - tag utilities (tag, taggings, tag list, etc.)
|
108
116
|
test_files:
|
109
117
|
- test/test_models.rb
|
118
|
+
- test/test_tag_reader.rb
|