wikidatum 0.1.0 → 0.2.0

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.
@@ -1,15 +1,20 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class Wikidatum::Item
4
+ # @return [String] the ID of the Wikibase item, in the format "Q123".
5
+ attr_reader :id
6
+
4
7
  # @!visibility private
5
8
  #
9
+ # @param id [String] The ID of the Wikibase item, in the format "Q123".
6
10
  # @param labels [Array<Wikidatum::Term>] An array of {Wikidatum::Term}s representing labels for this item.
7
11
  # @param descriptions [Array<Wikidatum::Term>] An array of {Wikidatum::Term}s representing descriptions for this item.
8
12
  # @param aliases [Array<Wikidatum::Term>] An array of {Wikidatum::Term}s representing aliases for this item.
9
13
  # @param statements [Array<Wikidatum::Statement>] Statements for this item.
10
14
  # @param sitelinks [Array<Wikidatum::Sitelink>] Sitelinks for this item.
11
15
  # @return [Wikidatum::Item]
12
- def initialize(labels:, descriptions:, aliases:, statements:, sitelinks:)
16
+ def initialize(id:, labels:, descriptions:, aliases:, statements:, sitelinks:)
17
+ @id = id
13
18
  @labels = labels
14
19
  @descriptions = descriptions
15
20
  @aliases = aliases
@@ -17,21 +22,28 @@ class Wikidatum::Item
17
22
  @sitelinks = sitelinks
18
23
  end
19
24
 
20
- # @param property [String] Wikidata property, in the format of 'P123'. If unspecified, will return all statements for the item.
21
- # @return [Array<Wikidatum::Statement>]
22
- def statements(property: nil)
23
- return @statements if property.nil?
24
-
25
- # TODO
26
- @statements
27
- end
28
-
25
+ # Get the label for an item in a given language.
26
+ #
27
+ # @example Get the label of the item for a given language.
28
+ # item.label(lang: 'es')
29
+ # @example Also accepts symbols.
30
+ # item.label(lang: :en)
31
+ # @example You can also use the {Wikidatum::LanguageCodes} constants to write code that's easier to read.
32
+ # item.label(lang: Wikidatum::LanguageCodes::English)
33
+ #
29
34
  # @param lang [String, Symbol]
30
35
  # @return [Wikidatum::Term, nil]
31
36
  def label(lang:)
32
37
  @labels.find { |label| label.lang == lang.to_s }
33
38
  end
34
39
 
40
+ # Get labels for an item.
41
+ #
42
+ # @example Get all labels on the item.
43
+ # item.labels
44
+ # @example Get the labels for a few specific languages.
45
+ # item.labels(langs: ['en', 'es', 'fr'])
46
+ #
35
47
  # @param langs [Array<String, Symbol>]
36
48
  # @return [Array<Wikidatum::Term>]
37
49
  def labels(langs: [])
@@ -41,12 +53,28 @@ class Wikidatum::Item
41
53
  @labels.filter { |label| langs.include?(label.lang) }
42
54
  end
43
55
 
56
+ # Get the description for an item in a given language.
57
+ #
58
+ # @example Get the description in a given language.
59
+ # item.description(lang: 'fr')
60
+ # @example Also accepts symbols.
61
+ # item.description(lang: :en)
62
+ # @example You can also use the {Wikidatum::LanguageCodes} constants to write code that's easier to read.
63
+ # item.description(lang: Wikidatum::LanguageCodes::English)
64
+ #
44
65
  # @param lang [String, Symbol]
45
66
  # @return [Wikidatum::Term, nil]
46
67
  def description(lang:)
47
68
  @descriptions.find { |desc| desc.lang == lang.to_s }
48
69
  end
49
70
 
71
+ # Get descriptions for an item.
72
+ #
73
+ # @example Get all descriptions on the item.
74
+ # item.descriptions
75
+ # @example Get the descriptions for a few specific languages.
76
+ # item.descriptions(langs: ['en', 'es', 'fr'])
77
+ #
50
78
  # @param langs [Array<String, Symbol>]
51
79
  # @return [Array<Wikidatum::Term>]
52
80
  def descriptions(langs: [])
@@ -56,6 +84,15 @@ class Wikidatum::Item
56
84
  @descriptions.filter { |desc| langs.include?(desc.lang) }
57
85
  end
58
86
 
87
+ # Get aliases for the item.
88
+ #
89
+ # @example Get aliases for all languages.
90
+ # item.aliases
91
+ # @example Get the aliases for one or more specific languages.
92
+ # item.aliases(langs: ['en', 'es'])
93
+ # @example Also accepts symbols.
94
+ # item.aliases(langs: [:en, :es])
95
+ #
59
96
  # @param langs [Array<Symbol, String>] If unspecified, will return all aliases for all languages.
60
97
  # @return [Array<Wikidatum::Term>]
61
98
  def aliases(langs: [])
@@ -65,6 +102,21 @@ class Wikidatum::Item
65
102
  @aliases.filter { |al| langs.include?(al.lang) }
66
103
  end
67
104
 
105
+ # Get statements on the item.
106
+ #
107
+ # @example Get all statements.
108
+ # item.statements
109
+ # @example Get statements for one or more specific properties.
110
+ # item.statements(properties: ['P123', 'P124'])
111
+ #
112
+ # @param properties [Array<String>] One or more Wikidata properties, in the format of `['P123']`. If unspecified, will return all statements for the item.
113
+ # @return [Array<Wikidatum::Statement>]
114
+ def statements(properties: [])
115
+ return @statements if properties.empty?
116
+
117
+ @statements.filter { |statement| properties.include?(statement.property_id) }
118
+ end
119
+
68
120
  # Get a specific sitelink based on its shortcode.
69
121
  #
70
122
  # @example
@@ -83,9 +135,11 @@ class Wikidatum::Item
83
135
  # @example Getting all sitelinks for the item.
84
136
  # item.sitelinks
85
137
  # @example Getting only a few specific sitelinks.
86
- # item.sitelink(sites: ['enwiki', 'eswiki', 'commons'])
138
+ # item.sitelinks(sites: ['enwiki', 'eswiki', 'commons'])
139
+ # @example Also accepts symbols.
140
+ # item.sitelinks(sites: [:enwiki, :eswiki])
87
141
  #
88
- # @param sites [Array<String, Symbol>] An array of sitelink shortcodes to return (e.g. ['enwiki', 'eswiki']), if not provided then all sitelinks will be returned.
142
+ # @param sites [Array<String, Symbol>] An array of sitelink shortcodes to return (e.g. `['enwiki', 'eswiki']`), if not provided then all sitelinks will be returned.
89
143
  # @return [Array<Wikidatum::Sitelink>]
90
144
  def sitelinks(sites: [])
91
145
  return @sitelinks if sites.empty?
@@ -93,4 +147,56 @@ class Wikidatum::Item
93
147
  sites.map!(&:to_s)
94
148
  @sitelinks.filter { |sitelink| sites.include?(sitelink.site) }
95
149
  end
150
+
151
+ # Convert the item, including all of its labels, descriptions, aliases,
152
+ # statements, and sitelinks, to a Ruby hash.
153
+ #
154
+ # This can be useful for debugging purposes.
155
+ #
156
+ # @example View the contents of an item according to the Wikidatum gem by outputting prettified JSON.
157
+ # require 'json'
158
+ #
159
+ # puts JSON.pretty_generate(item.to_h)
160
+ #
161
+ # @return [Hash]
162
+ def to_h
163
+ {
164
+ id: @id,
165
+ labels: @labels.map(&:to_h),
166
+ descriptions: @descriptions.map(&:to_h),
167
+ aliases: @aliases.map(&:to_h),
168
+ statements: @statements.map(&:to_h),
169
+ sitelinks: @sitelinks.map(&:to_h)
170
+ }
171
+ end
172
+
173
+ # @!visibility private
174
+ #
175
+ # This takes in the JSON blob (as a hash) that is output for an item record
176
+ # in the API and turns it into an actual instance of an Item.
177
+ #
178
+ # @param item_json [Hash]
179
+ # @return [Wikidatum::Item]
180
+ def self.marshal_load(item_json)
181
+ labels = item_json['labels'].to_a.map { |lang, label| Wikidatum::Term.new(lang: lang, value: label) }
182
+ descriptions = item_json['descriptions'].to_a.map { |lang, desc| Wikidatum::Term.new(lang: lang, value: desc) }
183
+ aliases = item_json['aliases'].to_a.flat_map do |lang, als|
184
+ als.map { |al| Wikidatum::Term.new(lang: lang, value: al) }
185
+ end
186
+ statements = item_json['statements'].to_a.flat_map do |_property_id, st_arr|
187
+ st_arr.map { |statement| Wikidatum::Statement.marshal_load(statement) }
188
+ end
189
+ sitelinks = item_json['sitelinks'].to_a.map do |_name, sitelink|
190
+ Wikidatum::Sitelink.new(site: sitelink['site'], title: sitelink['title'], badges: sitelink['badges'])
191
+ end
192
+
193
+ Wikidatum::Item.new(
194
+ id: item_json['id'],
195
+ labels: labels,
196
+ descriptions: descriptions,
197
+ aliases: aliases,
198
+ statements: statements,
199
+ sitelinks: sitelinks
200
+ )
201
+ end
96
202
  end
@@ -1,4 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- class Wikidatum::Qualifier
4
- end
3
+ require 'wikidatum/snak'
4
+
5
+ # Wikidatum::Qualifier is actually just an alias for snak, because qualifiers
6
+ # are effectively just snaks.
7
+ Wikidatum::Qualifier = Wikidatum::Snak
@@ -1,4 +1,47 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class Wikidatum::Reference
4
+ # @return [String] Hash of the reference (a cryptographic hash, not a Ruby hash).
5
+ attr_reader :hash
6
+
7
+ # @return [Array<Wikidatum::Snak>]
8
+ attr_reader :snaks
9
+
10
+ # @!visibility private
11
+ # @param hash [String] Hash of the reference (a cryptographic hash, not a Ruby hash).
12
+ # @param snaks [Array<Wikidatum::Snak>]
13
+ def initialize(hash:, snaks:)
14
+ @hash = hash
15
+ @snaks = snaks
16
+ end
17
+
18
+ # @return [Hash]
19
+ def to_h
20
+ {
21
+ hash: @hash,
22
+ snaks: @snaks.map(&:to_h)
23
+ }
24
+ end
25
+
26
+ # @return [String]
27
+ def inspect
28
+ "<Wikidatum::Reference hash=#{@hash.inspect} snaks=#{@snaks.inspect}>"
29
+ end
30
+
31
+ # @!visibility private
32
+ #
33
+ # This takes in the JSON blob (as a hash) that is output for a given
34
+ # reference in the API and turns it into an actual instance of a
35
+ # Reference.
36
+ #
37
+ # @param ref_json [Hash]
38
+ # @return [Wikidatum::Reference]
39
+ def self.marshal_load(ref_json)
40
+ snaks = ref_json['snaks'].values.flatten.map { |snak| Wikidatum::Snak.marshal_load(snak) }
41
+
42
+ Wikidatum::Reference.new(
43
+ hash: ref_json['hash'],
44
+ snaks: snaks
45
+ )
46
+ end
4
47
  end
@@ -15,11 +15,25 @@ class Wikidatum::Sitelink
15
15
  #
16
16
  # @param site [String, Symbol] The shortcode for the given site (e.g. 'enwiki', 'commons', etc.), can be either a string or a symbol.
17
17
  # @param title [String] The title of the page in the associated Wikimedia site.
18
- # @param badges [Array<String>] An array of badge names, optional.
18
+ # @param badges [Array<String>] An array of badges, given as item IDs (e.g. `['Q123', 'Q124']`) optional.
19
19
  # @return [Wikidatum::Sitelink]
20
20
  def initialize(site:, title:, badges: [])
21
21
  @site = site.to_s
22
22
  @title = title
23
23
  @badges = badges
24
24
  end
25
+
26
+ # @return [Hash]
27
+ def to_h
28
+ {
29
+ site: @site,
30
+ title: @title,
31
+ badges: @badges
32
+ }
33
+ end
34
+
35
+ # @return [String]
36
+ def inspect
37
+ "<Wikidatum::Sitelink site=#{@site.inspect} title=#{@title.inspect} badges=#{@badges.inspect}>"
38
+ end
25
39
  end
@@ -1,4 +1,79 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class Wikidatum::Snak
4
+ # @return [String] Hash of a snak (a cryptographic hash, not a Ruby hash).
5
+ attr_reader :hash
6
+
7
+ # @return [String]
8
+ attr_reader :snaktype
9
+
10
+ # @return [String] ID of the property for this Snak, in the format 'P123'.
11
+ attr_reader :property
12
+
13
+ # @return [String]
14
+ attr_reader :datatype
15
+
16
+ # For more information on the possible types that can be returned by
17
+ # datavalues, see the official documentation:
18
+ # https://doc.wikimedia.org/Wikibase/master/php/md_docs_topics_json.html#json_datavalues
19
+ #
20
+ # @return [Wikidatum::DataValueType::Base] the value of the statement, can take various forms
21
+ attr_reader :datavalue
22
+
23
+ # @!visibility private
24
+ # @param hash [String] Hash of a snak (a cryptographic hash, not a Ruby hash).
25
+ # @param snaktype [String]
26
+ # @param property [String] ID of the property for this Snak, in the format 'P123'.
27
+ # @param datatype [String]
28
+ # @param datavalue [DataValueType::GlobeCoordinate, DataValueType::MonolingualText, DataValueType::Quantity, DataValueType::WikibaseString, DataValueType::Time, DataValueType::WikibaseEntityId]
29
+ def initialize(hash:, snaktype:, property:, datatype:, datavalue:)
30
+ @hash = hash
31
+ @snaktype = snaktype
32
+ @property = property
33
+ @datatype = datatype
34
+ @datavalue = datavalue
35
+ end
36
+
37
+ # @return [Hash]
38
+ def to_h
39
+ {
40
+ hash: @hash,
41
+ snaktype: @snaktype,
42
+ property: @property,
43
+ datatype: @datatype,
44
+ datavalue: @datavalue.to_h
45
+ }
46
+ end
47
+
48
+ # @return [String]
49
+ def inspect
50
+ "<Wikidatum::Snak hash=#{@hash.inspect} snaktype=#{@snaktype.inspect} property=#{@property.inspect} datatype=#{@datatype.inspect} datavalue=#{@datavalue.inspect}>"
51
+ end
52
+
53
+ # @!visibility private
54
+ #
55
+ # This takes in the JSON blob (as a hash) that is output for a given
56
+ # snak in the API and turns it into an actual instance of a Snak.
57
+ #
58
+ # @param snak_json [Hash]
59
+ # @return [Wikidatum::Snak]
60
+ def self.marshal_load(snak_json)
61
+ # snaktype can be 'novalue' (no value) or 'somevalue' (unknown), so we handle those as somewhat special cases
62
+ case snak_json['snaktype']
63
+ when 'novalue'
64
+ datavalue = Wikidatum::DataValueType::Base.marshal_load('novalue', nil)
65
+ when 'somevalue'
66
+ datavalue = Wikidatum::DataValueType::Base.marshal_load('somevalue', nil)
67
+ when 'value'
68
+ datavalue = Wikidatum::DataValueType::Base.marshal_load(snak_json['datavalue']['type'], snak_json['datavalue']['value'])
69
+ end
70
+
71
+ Wikidatum::Snak.new(
72
+ hash: snak_json['hash'],
73
+ snaktype: snak_json['snaktype'],
74
+ property: snak_json['property'],
75
+ datatype: snak_json['datatype'],
76
+ datavalue: datavalue
77
+ )
78
+ end
4
79
  end
@@ -1,4 +1,77 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class Wikidatum::Statement
4
+ # @return [String]
5
+ attr_reader :id
6
+
7
+ # @return [String] property ID, in the format of 'P123'.
8
+ attr_accessor :property_id
9
+
10
+ # @return [Wikidatum::Snak]
11
+ attr_accessor :mainsnak
12
+
13
+ # @return [Array<Wikidatum::Qualifier>]
14
+ attr_accessor :qualifiers
15
+
16
+ # @return [Array<Wikidatum::Reference>]
17
+ attr_accessor :references
18
+
19
+ # @return [String] the rank of the given statement.
20
+ # Can have the values "preferred", "normal", or "deprecated". Defaults to "normal".
21
+ attr_accessor :rank
22
+
23
+ # @param id [String]
24
+ # @param property_id [String] The 'P123' ID of the property that this statement represents.
25
+ # @param mainsnak [Wikidatum::Snak]
26
+ # @param qualifiers [Array<Wikidatum::Qualifier>]
27
+ # @param references [Array<Wikidatum::Reference>]
28
+ # @param rank [String] The rank of the given statement.
29
+ # Can have the values "preferred", "normal", or "deprecated". Defaults to "normal".
30
+ def initialize(id:, property_id:, mainsnak:, qualifiers:, references:, rank: 'normal')
31
+ @id = id
32
+ @property_id = property_id
33
+ @mainsnak = mainsnak
34
+ @qualifiers = qualifiers
35
+ @references = references
36
+ @rank = rank
37
+ end
38
+
39
+ # @return [Hash]
40
+ def to_h
41
+ {
42
+ id: @id,
43
+ property_id: @property_id,
44
+ mainsnak: @mainsnak.to_h,
45
+ qualifiers: @qualifiers.map(&:to_h),
46
+ references: @references.map(&:to_h),
47
+ rank: @rank
48
+ }
49
+ end
50
+
51
+ # @!visibility private
52
+ #
53
+ # This takes in the JSON blob (as a hash) that is output for a given
54
+ # statement in the API and turns it into an actual instance of a Statement.
55
+ #
56
+ # @param statement_json [Hash]
57
+ # @return [Wikidatum::Statement]
58
+ def self.marshal_load(statement_json)
59
+ mainsnak = Wikidatum::Snak.marshal_load(statement_json['mainsnak'])
60
+
61
+ qualifiers = statement_json['qualifiers'].to_a.flat_map do |_qualifier_prop_id, qualifier|
62
+ qualifier.map { |q| Wikidatum::Qualifier.marshal_load(q) }
63
+ end
64
+ references = statement_json['references'].flat_map do |reference|
65
+ Wikidatum::Reference.marshal_load(reference)
66
+ end
67
+
68
+ Wikidatum::Statement.new(
69
+ id: statement_json['id'],
70
+ property_id: mainsnak.property,
71
+ mainsnak: mainsnak,
72
+ qualifiers: qualifiers,
73
+ references: references,
74
+ rank: statement_json['rank']
75
+ )
76
+ end
4
77
  end
@@ -18,4 +18,17 @@ class Wikidatum::Term
18
18
  @lang = lang.to_s
19
19
  @value = value
20
20
  end
21
+
22
+ # @return [Hash]
23
+ def to_h
24
+ {
25
+ lang: @lang,
26
+ value: @value
27
+ }
28
+ end
29
+
30
+ # @return [String]
31
+ def inspect
32
+ "<Wikidatum::Term lang=#{@lang.inspect} value=#{@value.inspect}>"
33
+ end
21
34
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Wikidatum
4
- VERSION = '0.1.0'
4
+ VERSION = '0.2.0'
5
5
  end
data/lib/wikidatum.rb CHANGED
@@ -1,9 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_relative 'wikidatum/client'
4
+ require_relative 'wikidatum/data_value_type'
4
5
  require_relative 'wikidatum/item'
5
6
  require_relative 'wikidatum/qualifier'
6
7
  require_relative 'wikidatum/reference'
8
+ require_relative 'wikidatum/sitelink'
7
9
  require_relative 'wikidatum/snak'
8
10
  require_relative 'wikidatum/statement'
9
11
  require_relative 'wikidatum/term'
@@ -11,4 +13,50 @@ require_relative 'wikidatum/version'
11
13
 
12
14
  module Wikidatum
13
15
  class Error < StandardError; end
16
+
17
+ # rubocop:disable Naming/ConstantName
18
+
19
+ # These language codes are not enforced, you can pass whatever language code
20
+ # you want, even if it's not represented in this list. The purpose of this
21
+ # is to provide helper constants to allow writing more readable code.
22
+ #
23
+ # This will only cover some of the most common language codes, not all of
24
+ # them.
25
+ module LanguageCodes
26
+ Arabic = 'ar'
27
+ BrazilianPortuguese = 'pt-br'
28
+ Chinese = 'zh'
29
+ Dutch = 'nl'
30
+ English = 'en'
31
+ EnglishUK = 'en-gb'
32
+ French = 'fr'
33
+ German = 'de'
34
+ Hebrew = 'he'
35
+ Hindi = 'hi'
36
+ Italian = 'it'
37
+ Polish = 'pl'
38
+ Portuguese = 'pt'
39
+ Russian = 'ru'
40
+ SimplifiedChinese = 'zh-hans'
41
+ Spanish = 'es'
42
+ TraditionalChinese = 'zh-hant'
43
+ Turkish = 'tr'
44
+ Ukrainian = 'uk'
45
+ # rubocop:enable Naming/ConstantName
46
+ end
47
+
48
+ module DataValueType
49
+ # rubocop:disable Lint/SymbolConversion
50
+ DATA_VALUE_TYPES = {
51
+ 'globecoordinate': 'Wikidatum::DataValueType::GlobeCoordinate',
52
+ 'monolingualtext': 'Wikidatum::DataValueType::MonolingualText',
53
+ 'novalue': 'Wikidatum::DataValueType::NoValue',
54
+ 'quantity': 'Wikidatum::DataValueType::Quantity',
55
+ 'somevalue': 'Wikidatum::DataValueType::SomeValue',
56
+ 'string': 'Wikidatum::DataValueType::WikibaseString',
57
+ 'time': 'Wikidatum::DataValueType::Time',
58
+ 'wikibase-entityid': 'Wikidatum::DataValueType::WikibaseEntityId'
59
+ }.freeze
60
+ # rubocop:enable Lint/SymbolConversion
61
+ end
14
62
  end
data/wikidatum.gemspec CHANGED
@@ -18,6 +18,7 @@ Gem::Specification.new do |spec|
18
18
  spec.metadata["homepage_uri"] = "https://github.com/connorshea/wikidatum"
19
19
  spec.metadata["source_code_uri"] = "https://github.com/connorshea/wikidatum"
20
20
  spec.metadata["changelog_uri"] = "https://github.com/connorshea/wikidatum/blob/main/CHANGELOG.md"
21
+ spec.metadata['rubygems_mfa_required'] = 'true'
21
22
 
22
23
  # Specify which files should be added to the gem when it is released.
23
24
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
@@ -30,8 +31,7 @@ Gem::Specification.new do |spec|
30
31
  spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
31
32
  spec.require_paths = ["lib"]
32
33
 
33
- # Uncomment to register a new dependency of your gem
34
- # spec.add_dependency "example-gem", "~> 1.0"
34
+ spec.add_dependency "faraday", "~> 2.4"
35
35
 
36
36
  # For more information and examples about making a new gem, check out our
37
37
  # guide at: https://bundler.io/guides/creating_gem.html
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wikidatum
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Connor Shea
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-06-20 00:00:00.000000000 Z
12
- dependencies: []
11
+ date: 2022-08-13 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: faraday
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '2.4'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '2.4'
13
27
  description: Interact with the Wikidata/Wikibase REST API from Ruby.
14
28
  email:
15
29
  - connor.james.shea+rubygems@gmail.com
@@ -27,6 +41,16 @@ files:
27
41
  - bin/setup
28
42
  - lib/wikidatum.rb
29
43
  - lib/wikidatum/client.rb
44
+ - lib/wikidatum/data_value_type.rb
45
+ - lib/wikidatum/data_value_type/base.rb
46
+ - lib/wikidatum/data_value_type/globe_coordinate.rb
47
+ - lib/wikidatum/data_value_type/monolingual_text.rb
48
+ - lib/wikidatum/data_value_type/no_value.rb
49
+ - lib/wikidatum/data_value_type/quantity.rb
50
+ - lib/wikidatum/data_value_type/some_value.rb
51
+ - lib/wikidatum/data_value_type/time.rb
52
+ - lib/wikidatum/data_value_type/wikibase_entity_id.rb
53
+ - lib/wikidatum/data_value_type/wikibase_string.rb
30
54
  - lib/wikidatum/item.rb
31
55
  - lib/wikidatum/qualifier.rb
32
56
  - lib/wikidatum/reference.rb
@@ -44,6 +68,7 @@ metadata:
44
68
  homepage_uri: https://github.com/connorshea/wikidatum
45
69
  source_code_uri: https://github.com/connorshea/wikidatum
46
70
  changelog_uri: https://github.com/connorshea/wikidatum/blob/main/CHANGELOG.md
71
+ rubygems_mfa_required: 'true'
47
72
  post_install_message:
48
73
  rdoc_options: []
49
74
  require_paths:
@@ -59,7 +84,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
59
84
  - !ruby/object:Gem::Version
60
85
  version: '0'
61
86
  requirements: []
62
- rubygems_version: 3.3.3
87
+ rubygems_version: 3.2.33
63
88
  signing_key:
64
89
  specification_version: 4
65
90
  summary: Ruby gem for the new Wikidata REST API.