Class: Wikidatum::Item
- Inherits:
-
Object
- Object
- Wikidatum::Item
- Defined in:
- lib/wikidatum/item.rb
Instance Attribute Summary collapse
-
#id ⇒ String
readonly
The ID of the Wikibase item, in the format “Q123”.
Instance Method Summary collapse
-
#aliases(langs: []) ⇒ Array<Wikidatum::Term>
Get aliases for the item.
-
#description(lang:) ⇒ Wikidatum::Term?
Get the description for an item in a given language.
-
#descriptions(langs: []) ⇒ Array<Wikidatum::Term>
Get descriptions for an item.
-
#label(lang:) ⇒ Wikidatum::Term?
Get the label for an item in a given language.
-
#labels(langs: []) ⇒ Array<Wikidatum::Term>
Get labels for an item.
-
#sitelink(site:) ⇒ Wikidatum::Sitelink?
Get a specific sitelink based on its shortcode.
-
#sitelinks(sites: []) ⇒ Array<Wikidatum::Sitelink>
Get the sitelinks on the item.
-
#statements(properties: []) ⇒ Array<Wikidatum::Statement>
Get statements on the item.
-
#to_h ⇒ Hash
Convert the item, including all of its labels, descriptions, aliases, statements, and sitelinks, to a Ruby hash.
Instance Attribute Details
#id ⇒ String (readonly)
Returns the ID of the Wikibase item, in the format “Q123”.
5 6 7 |
# File 'lib/wikidatum/item.rb', line 5 def id @id end |
Instance Method Details
#aliases(langs: []) ⇒ Array<Wikidatum::Term>
Get aliases for the item.
98 99 100 101 102 103 |
# File 'lib/wikidatum/item.rb', line 98 def aliases(langs: []) return @aliases if langs.empty? langs.map!(&:to_s) @aliases.filter { |al| langs.include?(al.lang) } end |
#description(lang:) ⇒ Wikidatum::Term?
Get the description for an item in a given language.
67 68 69 |
# File 'lib/wikidatum/item.rb', line 67 def description(lang:) @descriptions.find { |desc| desc.lang == lang.to_s } end |
#descriptions(langs: []) ⇒ Array<Wikidatum::Term>
Get descriptions for an item.
80 81 82 83 84 85 |
# File 'lib/wikidatum/item.rb', line 80 def descriptions(langs: []) return @descriptions if langs.empty? langs.map!(&:to_s) @descriptions.filter { |desc| langs.include?(desc.lang) } end |
#label(lang:) ⇒ Wikidatum::Term?
Get the label for an item in a given language.
36 37 38 |
# File 'lib/wikidatum/item.rb', line 36 def label(lang:) @labels.find { |label| label.lang == lang.to_s } end |
#labels(langs: []) ⇒ Array<Wikidatum::Term>
Get labels for an item.
49 50 51 52 53 54 |
# File 'lib/wikidatum/item.rb', line 49 def labels(langs: []) return @labels if langs.empty? langs.map!(&:to_s) @labels.filter { |label| langs.include?(label.lang) } end |
#sitelink(site:) ⇒ Wikidatum::Sitelink?
Get a specific sitelink based on its shortcode.
129 130 131 |
# File 'lib/wikidatum/item.rb', line 129 def sitelink(site:) @sitelinks.find { |sitelink| sitelink.site == site.to_s } end |
#sitelinks(sites: []) ⇒ Array<Wikidatum::Sitelink>
Get the sitelinks on the item.
144 145 146 147 148 149 |
# File 'lib/wikidatum/item.rb', line 144 def sitelinks(sites: []) return @sitelinks if sites.empty? sites.map!(&:to_s) @sitelinks.filter { |sitelink| sites.include?(sitelink.site) } end |
#statements(properties: []) ⇒ Array<Wikidatum::Statement>
Get statements on the item.
114 115 116 117 118 |
# File 'lib/wikidatum/item.rb', line 114 def statements(properties: []) return @statements if properties.empty? @statements.filter { |statement| properties.include?(statement.property_id) } end |
#to_h ⇒ Hash
Convert the item, including all of its labels, descriptions, aliases, statements, and sitelinks, to a Ruby hash.
This can be useful for debugging purposes.
162 163 164 165 166 167 168 169 170 171 |
# File 'lib/wikidatum/item.rb', line 162 def to_h { id: @id, labels: @labels.map(&:to_h), descriptions: @descriptions.map(&:to_h), aliases: @aliases.map(&:to_h), statements: @statements.map(&:to_h), sitelinks: @sitelinks.map(&:to_h) } end |