Class: Nytimes::Articles::Facet
- Inherits:
-
Object
- Object
- Nytimes::Articles::Facet
- Defined in:
- lib/nytimes_articles/facet.rb
Overview
This class represents a Facet used in the ArticleSearch API. Facets can be used to both search for matching articles (see Article#search) and are also returned as article and search metadata. Facets are made up of 3 parts:
-
facet_type
- a string; see Article#search for a list of facet types -
term
- a string as well -
count
- Facets returned as search metadata (via the:facets
parameter to Article#search) also include a non-nil count of matching articles for that facet
Constant Summary collapse
- CLASSIFIERS =
Facet name constants
'classifiers_facet'
- COLUMN =
'column_facet'
- DATE =
'date'
- DAY_OF_WEEK =
'day_of_week_facet'
- DESCRIPTION =
'des_facet'
- DESK =
'desk_facet'
- GEO =
'geo_facet'
- MATERIAL_TYPE =
'material_type_facet'
- ORGANIZATION =
'org_facet'
- PAGE =
'page_facet'
- PERSON =
'per_facet'
- PUB_DAY =
'publication_day'
- PUB_MONTH =
'publication_month'
- PUB_YEAR =
'publication_year'
- SECTION_PAGE =
'section_page_facet'
- SOURCE =
'source_facet'
- WORKS_MENTIONED =
'works_mentioned_facet'
- NYTD_BYLINE =
Facets of content formatted for nytimes.com
'nytd_byline'
- NYTD_DESCRIPTION =
'nytd_des_facet'
- NYTD_GEO =
'nytd_geo_facet'
- NYTD_ORGANIZATION =
'nytd_org_facet'
- NYTD_PERSON =
'nytd_per_facet'
- NYTD_SECTION =
'nytd_section_facet'
- NYTD_WORKS_MENTIONED =
'nytd_works_mentioned_facet'
- DEFAULT_RETURN_FACETS =
The default 5 facets to return
[DESCRIPTION, GEO, ORGANIZATION, PERSON, DESK]
- ALL_FACETS =
[CLASSIFIERS, COLUMN, DATE, DAY_OF_WEEK, DESCRIPTION, DESK, GEO, MATERIAL_TYPE, ORGANIZATION, PAGE, PERSON, PUB_DAY, PUB_MONTH, PUB_YEAR, SECTION_PAGE, SOURCE, WORKS_MENTIONED, NYTD_BYLINE, NYTD_DESCRIPTION, NYTD_GEO, NYTD_ORGANIZATION, NYTD_PERSON, NYTD_SECTION, NYTD_WORKS_MENTIONED]
Instance Attribute Summary collapse
-
#count ⇒ Object
readonly
The number of times this facet has appeared in the search results (note: this only applies for facets returned in the facets header on an Article#search).
-
#facet_type ⇒ Object
readonly
The facet type.
-
#term ⇒ Object
readonly
The term for the facet.
Class Method Summary collapse
-
.init_from_api(api_hash) ⇒ Object
Initializes a selection of Facet objects returned from the API.
-
.symbol_name(facet) ⇒ Object
Takes a symbol name and subs it to a string constant.
Instance Method Summary collapse
-
#initialize(facet_type, term, count) ⇒ Facet
constructor
Initializes the facet.
Constructor Details
#initialize(facet_type, term, count) ⇒ Facet
Initializes the facet. There is seldom a reason for you to call this.
60 61 62 63 64 |
# File 'lib/nytimes_articles/facet.rb', line 60 def initialize(facet_type, term, count) @facet_type = facet_type @term = term @count = count end |
Instance Attribute Details
#count ⇒ Object (readonly)
The number of times this facet has appeared in the search results (note: this only applies for facets returned in the facets header on an Article#search)
17 18 19 |
# File 'lib/nytimes_articles/facet.rb', line 17 def count @count end |
#facet_type ⇒ Object (readonly)
The facet type
21 22 23 |
# File 'lib/nytimes_articles/facet.rb', line 21 def facet_type @facet_type end |
#term ⇒ Object (readonly)
The term for the facet
13 14 15 |
# File 'lib/nytimes_articles/facet.rb', line 13 def term @term end |
Class Method Details
.init_from_api(api_hash) ⇒ Object
Initializes a selection of Facet objects returned from the API. Used for marshaling Facets in articles and metadata from search results (Note: some facets are returned as scalar values)
109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 |
# File 'lib/nytimes_articles/facet.rb', line 109 def self.init_from_api(api_hash) return nil if api_hash.nil? unless api_hash.is_a? Hash raise ArgumentError, "expecting a Hash only" else return nil if api_hash.empty? end out = {} api_hash.each_pair do |k,v| out[k] = v.map {|f| Facet.new(k, f['term'], f['count'])} end out end |
.symbol_name(facet) ⇒ Object
Takes a symbol name and subs it to a string constant
68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 |
# File 'lib/nytimes_articles/facet.rb', line 68 def self.symbol_name(facet) case facet when String return facet when Facet return facet.facet_type when Symbol # fall through else raise ArgumentError, "Unsupported type to Facet#symbol_to_api_name" end case facet when :geography GEO when :org, :orgs ORGANIZATION when :people PERSON when :nytd_geography NYTD_GEO when :nytd_org, :nytd_orgs NYTD_ORGANIZATION when :nytd_people NYTD_PERSON else name = facet.to_s.upcase if const_defined?(name) const_get(name) elsif name =~ /S$/ && const_defined?(name.gsub(/S$/, '')) const_get(name.gsub(/S$/, '')) else raise ArgumentError, "Unable to find a matching facet key for symbol :#{facet}" end end end |