wikidatum 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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.