ntee 0.0.3 → 0.0.4

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
+ SHA256:
3
+ metadata.gz: 03b80da907998c1501a017b67b3a77157ec8496a62d5a6d2942f588a414f6e20
4
+ data.tar.gz: 474320909c63ff0c4dadd46a9ab4afeccf6f2af7e96dcc6983a5a640f30fb430
5
+ SHA512:
6
+ metadata.gz: 8e254d86d9376ab2fe718df3d976f72592fcbdd5db26492116513fb38763068dbb1f8e635f618b08f646d5b1aa0e9bfc5a84fb6d4b21d4689f9fb273c431a228
7
+ data.tar.gz: 7d42be8621df32db7c2a04f444e21edb43be8b044bf36522d17765cfe7c9e4d55bfc2efe60e7566cdbdfecec5a9c2fd3bd3401a987800e79a6496ddbad4a6a20
data/README.md CHANGED
@@ -15,10 +15,25 @@ category.ancestors # [NTEE.category("R60"), NTEE.category("R")]
15
15
 
16
16
  Easy-peasy!
17
17
 
18
+ There is also a helper method to make this easy to build Rails selection dropdowns
19
+
20
+ ```ruby
21
+ NTEE.as_list
22
+ ```
23
+
18
24
  ## search_dimensions integration
19
25
 
20
26
  The file `lib/ntee/search_dimension.rb` defines a few classes you can use in conjunction with Gively's `search_dimensions` gem to deal with NTEE categories stored in a Solr search index. `NTEE::HierarchicalDimension` lets you treat the categories as a hierarchical tree, and `NTEE::FlatDimension` lets you treat them as a plain string field.
21
27
 
22
28
  ## Licensing
23
29
 
24
- This gem is Copyright © 2011-2012 Gively, Inc. and is released under the MIT license. For more details, please see the LICENSE file.
30
+ This gem is Copyright © 2011-2012 Gively, Inc. and is released under the MIT license. For more details, please see the LICENSE file.
31
+
32
+ ## Testing and Debugging
33
+
34
+ To test in console
35
+
36
+ ```shell
37
+ bundle install
38
+ bundle exec rake test:console
39
+ ```
data/Rakefile CHANGED
@@ -1,2 +1,11 @@
1
1
  #!/usr/bin/env rake
2
2
  require "bundler/gem_tasks"
3
+
4
+ namespace :test do
5
+ desc "Test Task"
6
+
7
+ desc "Load stuff in IRB."
8
+ task :console do
9
+ exec "irb -r rubygems -r pp -r ./lib/ntee"
10
+ end
11
+ end
@@ -3,27 +3,31 @@ require 'ntee/version'
3
3
  module NTEE
4
4
  class Category
5
5
  attr_accessor :name, :code, :subcategories, :parent
6
-
6
+
7
7
  def initialize
8
8
  self.subcategories ||= {}
9
9
  end
10
-
10
+
11
+ def to_s
12
+ "#{name} (#{code})"
13
+ end
14
+
11
15
  def inspect
12
16
  "<NTEE Category #{code} (#{name})>"
13
17
  end
14
-
18
+
15
19
  def [](subcategory_code)
16
20
  self.subcategories[subcategory_code.to_s]
17
21
  end
18
-
22
+
19
23
  def parent=(parent)
20
24
  if parent && parent[code] != self
21
- parent.add_subcategory!(self)
25
+ parent.add_subcategory!(self)
22
26
  end
23
-
27
+
24
28
  @parent = parent
25
29
  end
26
-
30
+
27
31
  def ancestors
28
32
  if parent
29
33
  [parent] + parent.ancestors
@@ -31,28 +35,28 @@ module NTEE
31
35
  []
32
36
  end
33
37
  end
34
-
38
+
35
39
  def descendants
36
40
  (subcategories.values + subcategories.values.map(&:descendants)).flatten
37
41
  end
38
-
42
+
39
43
  def add_subcategory!(subcategory)
40
44
  subcategories[subcategory.code.to_s] = subcategory
41
45
  subcategory.parent = self
42
46
  subcategories
43
47
  end
44
-
48
+
45
49
  def as_json(options={})
46
50
  hsh = {
47
51
  'code' => code,
48
52
  'name' => name
49
53
  }
50
-
54
+
51
55
  hsh['subcategories'] = subcategories.values.as_json(options) if subcategories && subcategories.count > 0
52
-
56
+
53
57
  hsh
54
58
  end
55
-
59
+
56
60
  def attributes=(attributes)
57
61
  attributes.each do |name, value|
58
62
  case name.to_s
@@ -73,7 +77,7 @@ module NTEE
73
77
  raise "Subcategory #{value.inspect} is neither a Category nor a Hash"
74
78
  end
75
79
  end
76
-
80
+
77
81
  subcats.each do |subcat|
78
82
  add_subcategory!(subcat)
79
83
  end
@@ -81,10 +85,10 @@ module NTEE
81
85
  end
82
86
  end
83
87
  end
84
-
88
+
85
89
  class << self
86
90
  attr_accessor :root_categories, :all_categories
87
-
91
+
88
92
  def category(cat_or_code)
89
93
  case cat_or_code
90
94
  when NTEE::Category
@@ -93,7 +97,7 @@ module NTEE
93
97
  all_categories[cat_or_code.to_s]
94
98
  end
95
99
  end
96
-
100
+
97
101
  def add_category!(category)
98
102
  root_categories[category.code.to_s] = category if category.parent.nil?
99
103
  category.subcategories.each do |code, subcategory|
@@ -102,14 +106,31 @@ module NTEE
102
106
  all_categories[category.code.to_s] = category
103
107
  end
104
108
  end
105
-
109
+
106
110
  self.root_categories = {}
107
111
  self.all_categories = {}
112
+
113
+ def self.as_list
114
+ @as_list ||= sort_by_code(flattened_categories)
115
+ end
116
+
117
+ private
118
+
119
+ def self.flattened_categories
120
+ all_categories.map do |parent_category|
121
+ c = parent_category[1]
122
+ [c.to_s, c.code]
123
+ end
124
+ end
125
+
126
+ def self.sort_by_code(arr)
127
+ arr.sort {|a, b| a[1] <=> b[1] }
128
+ end
108
129
  end
109
130
 
110
131
  begin
111
132
  require 'json'
112
-
133
+
113
134
  File.open(File.expand_path("../ntee_categories.json", __FILE__), 'r') do |file|
114
135
  JSON.load(file).each do |attributes|
115
136
  NTEE::Category.new.tap do |category|
@@ -121,4 +142,4 @@ begin
121
142
  rescue
122
143
  puts "WARNING: Couldn't load NTEE categories!"
123
144
  puts $!
124
- end
145
+ end
@@ -1,3 +1,3 @@
1
1
  module NTEE
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
@@ -17,4 +17,5 @@ Gem::Specification.new do |gem|
17
17
 
18
18
  gem.add_development_dependency 'i18n'
19
19
  gem.add_development_dependency 'activesupport', '>= 3.0'
20
+ gem.add_development_dependency 'rake'
20
21
  end
metadata CHANGED
@@ -1,38 +1,57 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ntee
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
5
- prerelease:
4
+ version: 0.0.4
6
5
  platform: ruby
7
6
  authors:
8
7
  - Nat Budin
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2012-06-02 00:00:00.000000000 Z
11
+ date: 2018-09-20 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: i18n
16
- requirement: &70267026232720 !ruby/object:Gem::Requirement
17
- none: false
15
+ requirement: !ruby/object:Gem::Requirement
18
16
  requirements:
19
- - - ! '>='
17
+ - - ">="
20
18
  - !ruby/object:Gem::Version
21
19
  version: '0'
22
20
  type: :development
23
21
  prerelease: false
24
- version_requirements: *70267026232720
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
25
27
  - !ruby/object:Gem::Dependency
26
28
  name: activesupport
27
- requirement: &70267026232220 !ruby/object:Gem::Requirement
28
- none: false
29
+ requirement: !ruby/object:Gem::Requirement
29
30
  requirements:
30
- - - ! '>='
31
+ - - ">="
31
32
  - !ruby/object:Gem::Version
32
33
  version: '3.0'
33
34
  type: :development
34
35
  prerelease: false
35
- version_requirements: *70267026232220
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '3.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
36
55
  description: Utilities to support the Urban Institute's National Taxonomy of Exempt
37
56
  Entities
38
57
  email:
@@ -41,7 +60,7 @@ executables: []
41
60
  extensions: []
42
61
  extra_rdoc_files: []
43
62
  files:
44
- - .gitignore
63
+ - ".gitignore"
45
64
  - Gemfile
46
65
  - LICENSE
47
66
  - README.md
@@ -53,26 +72,25 @@ files:
53
72
  - ntee.gemspec
54
73
  homepage: https://github.com/gively/ntee
55
74
  licenses: []
75
+ metadata: {}
56
76
  post_install_message:
57
77
  rdoc_options: []
58
78
  require_paths:
59
79
  - lib
60
80
  required_ruby_version: !ruby/object:Gem::Requirement
61
- none: false
62
81
  requirements:
63
- - - ! '>='
82
+ - - ">="
64
83
  - !ruby/object:Gem::Version
65
84
  version: '0'
66
85
  required_rubygems_version: !ruby/object:Gem::Requirement
67
- none: false
68
86
  requirements:
69
- - - ! '>='
87
+ - - ">="
70
88
  - !ruby/object:Gem::Version
71
89
  version: '0'
72
90
  requirements: []
73
91
  rubyforge_project:
74
- rubygems_version: 1.8.11
92
+ rubygems_version: 2.7.3
75
93
  signing_key:
76
- specification_version: 3
94
+ specification_version: 4
77
95
  summary: NTEE utilities for US nonprofit entity categorization
78
96
  test_files: []