puree 1.1.0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 51982259947535b8a9b88916eca1d629004b1d78
4
- data.tar.gz: 0b4469e3b0f0881d45ebbdc7a90eb69f7b4e29cb
3
+ metadata.gz: 92900cf287eee283a00fc51d36aacdf62b6c0ef7
4
+ data.tar.gz: b3a7ea09d42501087a1bb86cd019d1ccbc6e0971
5
5
  SHA512:
6
- metadata.gz: e1ab192064572d2935d3546577c4bdbe4dbbd624f9056f173da1d9d91f910beb493aa0dd17a13a1162003f618ea215f213643e6a3fc98509acdd89e8fa21b416
7
- data.tar.gz: 3e94e0b3ae0f86fa0f91911e142d435d428c088735108d19aa5ca49c182d18f16602d83441d374158a9bbc8a4635d60c250bff43d4fc711634d4bd551e2ed0c7
6
+ metadata.gz: e0950129f4825a69f43286e5b6a933e0213e7ac48a99dfcd9cb8305d7c88f464b56472fad809d0b8eee68847d8b5b3decd16bdf4a911f3c23b037e51abff40f0
7
+ data.tar.gz: b61ec2735dc14cbdc196ad5049e4293f4f4972d5a5d0dac27d257af868ac20178be9e2e8682fd19bdcbbdafd7b60214bfecf9a0726cfe149454463f5d7fc9c4c
data/CHANGELOG.md CHANGED
@@ -5,6 +5,19 @@ This project adheres to [Semantic Versioning](http://semver.org/).
5
5
  ## Unreleased
6
6
  - Metadata: activity?, clipping?, externalPerson?
7
7
 
8
+ ## 1.2.0 - 2017-03-31
9
+ ### Added
10
+ - Publication - language, owner, translated_title, translated_subtitle.
11
+ - Publication types - Doctoral Thesis and Master's Thesis.
12
+
13
+ ### Changed
14
+ - Publication - common attribute set established. doi, event, pages become mixins
15
+ for publication types.
16
+
17
+ ## 1.1.0 - 2017-03-24
18
+ ### Added
19
+ - Publication - keywords, publisher.
20
+
8
21
  ## 1.0.0 - 2017-03-15
9
22
  ### Added
10
23
  - Dataset - legal conditions.
data/lib/puree.rb CHANGED
@@ -4,6 +4,7 @@ require 'nokogiri'
4
4
  require 'puree/version'
5
5
 
6
6
  require 'puree/util/date'
7
+ require 'puree/util/string'
7
8
 
8
9
  require 'puree/xml_extractor/shared'
9
10
  require 'puree/xml_extractor/base'
@@ -17,6 +18,12 @@ require 'puree/xml_extractor/organisation'
17
18
  require 'puree/xml_extractor/person'
18
19
  require 'puree/xml_extractor/project'
19
20
  require 'puree/xml_extractor/publication'
21
+ require 'puree/xml_extractor/mixins/doi_mixin'
22
+ require 'puree/xml_extractor/mixins/event_mixin'
23
+ require 'puree/xml_extractor/mixins/pages_mixin'
24
+ require 'puree/xml_extractor/thesis'
25
+ require 'puree/xml_extractor/doctoral_thesis'
26
+ require 'puree/xml_extractor/masters_thesis'
20
27
  require 'puree/xml_extractor/publisher'
21
28
  require 'puree/xml_extractor/server'
22
29
 
@@ -39,6 +46,9 @@ require 'puree/model/organisation'
39
46
  require 'puree/model/person'
40
47
  require 'puree/model/project'
41
48
  require 'puree/model/publication'
49
+ require 'puree/model/thesis'
50
+ require 'puree/model/doctoral_thesis'
51
+ require 'puree/model/masters_thesis'
42
52
  require 'puree/model/publisher'
43
53
  require 'puree/model/related_content_header'
44
54
  require 'puree/model/spatial_point'
@@ -63,6 +73,9 @@ require 'puree/extractor/organisation'
63
73
  require 'puree/extractor/person'
64
74
  require 'puree/extractor/project'
65
75
  require 'puree/extractor/publication'
76
+ require 'puree/extractor/thesis'
77
+ require 'puree/extractor/doctoral_thesis'
78
+ require 'puree/extractor/masters_thesis'
66
79
  require 'puree/extractor/publisher'
67
80
  require 'puree/extractor/collection'
68
81
  require 'puree/extractor/download'
@@ -19,10 +19,10 @@ module Puree
19
19
  #
20
20
  # @param limit [Fixnum]
21
21
  # @param offset [Fixnum]
22
- # @param created_start [String]
23
- # @param created_end [String]
24
- # @param modified_start [String]
25
- # @param modified_end [String]
22
+ # @param created_start [String] using format YYYY-MM-DD
23
+ # @param created_end [String] using format YYYY-MM-DD
24
+ # @param modified_start [String] using format YYYY-MM-DD
25
+ # @param modified_end [String] using format YYYY-MM-DD
26
26
  # @return [Array<Puree::Model::Resource subclass>] Resource metadata e.g. Puree::Model::Dataset.
27
27
  def get(
28
28
  limit: 0,
@@ -0,0 +1,24 @@
1
+ module Puree
2
+ module Extractor
3
+
4
+ # Doctoral thesis extractor.
5
+ #
6
+ class DoctoralThesis < Puree::Extractor::Thesis
7
+
8
+ # @option (see Puree::Extractor::Resource#initialize)
9
+ def initialize(config)
10
+ set_model_type 'doctoral_thesis'
11
+ super
12
+ end
13
+
14
+ private
15
+
16
+ def combine_metadata
17
+ super
18
+ @model.type === 'Doctoral Thesis' ? @model : nil
19
+ end
20
+
21
+ end
22
+
23
+ end
24
+ end
@@ -0,0 +1,24 @@
1
+ module Puree
2
+ module Extractor
3
+
4
+ # Master's thesis extractor.
5
+ #
6
+ class MastersThesis < Puree::Extractor::Thesis
7
+
8
+ # @option (see Puree::Extractor::Resource#initialize)
9
+ def initialize(config)
10
+ set_model_type 'masters_thesis'
11
+ super
12
+ end
13
+
14
+ private
15
+
16
+ def combine_metadata
17
+ super
18
+ @model.type === "Master's Thesis" ? @model : nil
19
+ end
20
+
21
+ end
22
+
23
+ end
24
+ end
@@ -16,14 +16,14 @@ module Puree
16
16
 
17
17
  def combine_metadata
18
18
  super
19
+
19
20
  @model.category = @extractor.category
20
21
  @model.description = @extractor.description
21
- @model.doi = @extractor.doi
22
- @model.event = @extractor.event
23
22
  @model.files = @extractor.files
24
23
  @model.keywords = @extractor.keywords
24
+ @model.language = @extractor.language
25
25
  @model.organisations = @extractor.organisations
26
- @model.pages = @extractor.pages
26
+ @model.owner = @extractor.owner
27
27
  @model.persons_internal = @extractor.persons_internal
28
28
  @model.persons_external = @extractor.persons_external
29
29
  @model.persons_other = @extractor.persons_other
@@ -31,6 +31,8 @@ module Puree
31
31
  @model.statuses = @extractor.statuses
32
32
  @model.subtitle = @extractor.subtitle
33
33
  @model.title = @extractor.title
34
+ @model.translated_subtitle = @extractor.translated_subtitle
35
+ @model.translated_title = @extractor.translated_title
34
36
  @model.type = @extractor.type
35
37
  @model
36
38
  end
@@ -30,6 +30,11 @@ module Puree
30
30
 
31
31
  private
32
32
 
33
+ # For specialised extraction such as Publication subtypes e.g. doctoral_thesis
34
+ def set_model_type(type)
35
+ @model_type = type
36
+ end
37
+
33
38
  # Set content from XML.
34
39
  #
35
40
  # @param xml [String]
@@ -42,12 +47,20 @@ module Puree
42
47
 
43
48
  def setup(resource)
44
49
  @resource_type = resource
45
- resource_class = "Puree::Model::#{resource.to_s.capitalize}"
50
+ if @model_type
51
+ resource_class = "Puree::Model::#{Puree::Util::String.titleize(@model_type.to_s)}"
52
+ else
53
+ resource_class = "Puree::Model::#{resource.to_s.capitalize}"
54
+ end
46
55
  @model = Object.const_get(resource_class).new
47
56
  end
48
57
 
49
58
  def make_xml_extractor xml
50
- resource_class = "Puree::XMLExtractor::#{@resource_type.to_s.capitalize}"
59
+ if @model_type
60
+ resource_class = "Puree::XMLExtractor::#{Puree::Util::String.titleize(@model_type.to_s)}"
61
+ else
62
+ resource_class = "Puree::XMLExtractor::#{@resource_type.to_s.capitalize}"
63
+ end
51
64
  @extractor = Object.const_get(resource_class).new xml: xml
52
65
  end
53
66
 
@@ -0,0 +1,34 @@
1
+ module Puree
2
+ module Extractor
3
+
4
+ # Thesis extractor.
5
+ #
6
+ class Thesis < Puree::Extractor::Publication
7
+
8
+ # @option (see Puree::Extractor::Resource#initialize)
9
+ def initialize(config)
10
+ set_model_type 'thesis'
11
+ super
12
+ end
13
+
14
+ private
15
+
16
+ def combine_metadata
17
+ super
18
+
19
+ thesis_types = ["Master's Thesis", 'Doctoral Thesis']
20
+ return nil if !thesis_types.include? @model.type
21
+
22
+ @model.award_date = @extractor.award_date
23
+ @model.awarding_institution = @extractor.awarding_institution
24
+ @model.doi = @extractor.doi
25
+ @model.pages = @extractor.pages
26
+ @model.qualification = @extractor.qualification
27
+ @model.sponsors = @extractor.sponsors
28
+ @model
29
+ end
30
+
31
+ end
32
+
33
+ end
34
+ end
@@ -0,0 +1,10 @@
1
+ module Puree
2
+ module Model
3
+
4
+ # A doctoral thesis.
5
+ #
6
+ class DoctoralThesis < Puree::Model::Thesis
7
+
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,10 @@
1
+ module Puree
2
+ module Model
3
+
4
+ # A Master's thesis.
5
+ #
6
+ class MastersThesis < Puree::Model::Thesis
7
+
8
+ end
9
+ end
10
+ end
@@ -11,23 +11,20 @@ module Puree
11
11
  # @return [String, nil]
12
12
  attr_accessor :description
13
13
 
14
- # @return [String, nil]
15
- attr_accessor :doi
16
-
17
- # @return [Puree::Model::EventHeader, nil]
18
- attr_accessor :event
19
-
20
14
  # @return [Array<Puree::Model::File>]
21
15
  attr_accessor :files
22
16
 
23
17
  # @return [Array<String>]
24
18
  attr_accessor :keywords
25
19
 
20
+ # @return [String, nil]
21
+ attr_accessor :language
22
+
26
23
  # @return [Array<Puree::Model::OrganisationHeader>]
27
24
  attr_accessor :organisations
28
25
 
29
- # @return [Fixnum, nil]
30
- attr_accessor :pages
26
+ # @return [Puree::Model::OrganisationHeader, nil]
27
+ attr_accessor :owner
31
28
 
32
29
  # @return [Array<Puree::Model::EndeavourPerson>]
33
30
  attr_accessor :persons_internal
@@ -50,6 +47,12 @@ module Puree
50
47
  # @return [String, nil]
51
48
  attr_accessor :title
52
49
 
50
+ # @return [String, nil]
51
+ attr_accessor :translated_subtitle
52
+
53
+ # @return [String, nil]
54
+ attr_accessor :translated_title
55
+
53
56
  # @return [String, nil]
54
57
  attr_accessor :type
55
58
 
@@ -0,0 +1,28 @@
1
+ module Puree
2
+ module Model
3
+
4
+ # A thesis.
5
+ #
6
+ class Thesis < Puree::Model::Publication
7
+
8
+ # @return [Time, nil]
9
+ attr_accessor :award_date
10
+
11
+ # @return [Puree::Model::OrganisationHeader, nil]
12
+ attr_accessor :awarding_institution
13
+
14
+ # @return [String, nil]
15
+ attr_accessor :doi
16
+
17
+ # # @return [Fixnum, nil]
18
+ attr_accessor :pages
19
+
20
+ # @return [String, nil]
21
+ attr_accessor :qualification
22
+
23
+ # @return [Array<String>, nil]
24
+ attr_accessor :sponsors
25
+
26
+ end
27
+ end
28
+ end
@@ -1,8 +1,7 @@
1
1
  module Puree
2
-
3
2
  module Util
4
3
 
5
- # Date transformations
4
+ # Date transformations.
6
5
  #
7
6
  module Date
8
7
 
@@ -82,5 +81,4 @@ module Puree
82
81
  end
83
82
 
84
83
  end
85
-
86
84
  end
@@ -0,0 +1,19 @@
1
+ module Puree
2
+ module Util
3
+
4
+ # String utilities.
5
+ module String
6
+
7
+ # Titleize
8
+ # Assumes underscore as separator.
9
+ # e.g. foo_bar becomes FooBar
10
+ #
11
+ def self.titleize(x)
12
+ arr = "#{x}".split('_')
13
+ caps = arr.map { |i| i.capitalize }
14
+ caps.join
15
+ end
16
+
17
+ end
18
+ end
19
+ end
data/lib/puree/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module Puree
2
2
  # Semantic version number
3
3
  #
4
- VERSION = "1.1.0"
4
+ VERSION = "1.2.0"
5
5
  end
@@ -0,0 +1,14 @@
1
+ module Puree
2
+ module XMLExtractor
3
+
4
+ # Doctoral thesis XML extractor.
5
+ #
6
+ class DoctoralThesis < Puree::XMLExtractor::Thesis
7
+
8
+ def initialize(xml:)
9
+ super
10
+ end
11
+
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ module Puree
2
+ module XMLExtractor
3
+
4
+ # Master's thesis XML extractor.
5
+ #
6
+ class MastersThesis < Puree::XMLExtractor::Thesis
7
+
8
+ def initialize(xml:)
9
+ super
10
+ end
11
+
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,17 @@
1
+ module Puree
2
+
3
+ module XMLExtractor
4
+
5
+ # DOI extractor mixin.
6
+ #
7
+ module DoiMixin
8
+
9
+ # @return [String, nil]
10
+ def doi
11
+ xpath_query_for_single_value '//doi'
12
+ end
13
+
14
+ end
15
+
16
+ end
17
+ end
@@ -0,0 +1,24 @@
1
+ module Puree
2
+
3
+ module XMLExtractor
4
+
5
+ # Event extractor mixin.
6
+ #
7
+ module EventMixin
8
+
9
+ # @return [Puree::Model::EventHeader, nil]
10
+ def event
11
+ xpath_result = xpath_query '/event'
12
+ if !xpath_result.empty?
13
+ header = Puree::Model::EventHeader.new
14
+ header.uuid = xpath_result.xpath('@uuid').text.strip
15
+ header.title = xpath_result.xpath('title/localizedString').text.strip
16
+ return header if header.data?
17
+ end
18
+ nil
19
+ end
20
+
21
+ end
22
+
23
+ end
24
+ end
@@ -0,0 +1,18 @@
1
+ module Puree
2
+
3
+ module XMLExtractor
4
+
5
+ # Pages extractor mixin.
6
+ #
7
+ module PagesMixin
8
+
9
+ # @return [Fixnum, nil]
10
+ def pages
11
+ xpath_result = xpath_query_for_single_value('/numberOfPages')
12
+ xpath_result ? xpath_result.to_i : nil
13
+ end
14
+
15
+ end
16
+
17
+ end
18
+ end
@@ -2,7 +2,7 @@ module Puree
2
2
 
3
3
  module XMLExtractor
4
4
 
5
- # Publication XMLextractor.
5
+ # Publication XML extractor.
6
6
  #
7
7
  class Publication < Puree::XMLExtractor::Resource
8
8
 
@@ -21,23 +21,6 @@ module Puree
21
21
  xpath_query_for_single_value '/abstract/localizedString'
22
22
  end
23
23
 
24
- # @return [String, nil]
25
- def doi
26
- xpath_query_for_single_value '//doi'
27
- end
28
-
29
- # @return [Puree::Model::EventHeader, nil]
30
- def event
31
- xpath_result = xpath_query '/event'
32
- if !xpath_result.empty?
33
- header = Puree::Model::EventHeader.new
34
- header.uuid = xpath_result.xpath('@uuid').text.strip
35
- header.title = xpath_result.xpath('title/localizedString').text.strip
36
- return header if header.data?
37
- end
38
- nil
39
- end
40
-
41
24
  # @return [Array<Puree::Model::File>]
42
25
  def files
43
26
  xpath_result = xpath_query '/electronicVersionAssociations/electronicVersionFileAssociations/electronicVersionFileAssociation'
@@ -67,16 +50,21 @@ module Puree
67
50
  data_arr.uniq
68
51
  end
69
52
 
53
+ # @return [String, nil]
54
+ def language
55
+ xpath_query_for_single_value '/language/term/localizedString'
56
+ end
57
+
70
58
  # @return [Array<Puree::Model::OrganisationHeader>]
71
59
  def organisations
72
60
  xpath_result = xpath_query '/organisations/association/organisation'
73
61
  Puree::XMLExtractor::Shared.organisation_multi_header xpath_result
74
62
  end
75
63
 
76
- # @return [Fixnum, nil]
77
- def pages
78
- xpath_result = xpath_query_for_single_value('/numberOfPages')
79
- xpath_result ? xpath_result.to_i : nil
64
+ # @return [Puree::Model::OrganisationHeader, nil]
65
+ def owner
66
+ xpath_result = xpath_query '/owner'
67
+ Puree::XMLExtractor::Shared.organisation_header xpath_result
80
68
  end
81
69
 
82
70
  # @return [Array<Puree::Model::EndeavourPerson>]
@@ -129,6 +117,16 @@ module Puree
129
117
  xpath_query_for_single_value '/title'
130
118
  end
131
119
 
120
+ # @return [String, nil]
121
+ def translated_subtitle
122
+ xpath_query_for_single_value '/translatedSubtitle/localizedString'
123
+ end
124
+
125
+ # @return [String, nil]
126
+ def translated_title
127
+ xpath_query_for_single_value '/translatedTitle/localizedString'
128
+ end
129
+
132
130
  # @return [String, nil]
133
131
  def type
134
132
  xpath_query_for_single_value '/typeClassification/term/localizedString'
@@ -187,7 +185,11 @@ module Puree
187
185
  # Author
188
186
  # Illustrator
189
187
  # Editor
190
- # Translator
188
+ # Translator # # @return [Fixnum, nil]
189
+ # def pages
190
+ # xpath_result = xpath_query_for_single_value('/numberOfPages')
191
+ # xpath_result ? xpath_result.to_i : nil
192
+ # end
191
193
  # Publisher
192
194
 
193
195
  # ... many, many more research output types ...
@@ -0,0 +1,44 @@
1
+ module Puree
2
+ module XMLExtractor
3
+
4
+ # Thesis XML extractor.
5
+ #
6
+ class Thesis < Puree::XMLExtractor::Publication
7
+ include Puree::XMLExtractor::DoiMixin
8
+ include Puree::XMLExtractor::PagesMixin
9
+
10
+ def initialize(xml:)
11
+ super
12
+ end
13
+
14
+ # @return [Time, nil]
15
+ def award_date
16
+ xpath_result = xpath_query_for_single_value('/awardDate')
17
+ Time.parse xpath_result if xpath_result
18
+ end
19
+
20
+ # @return [Puree::Model::OrganisationHeader, nil]
21
+ def awarding_institution
22
+ xpath_result = xpath_query '/awardingInstitution/internalExternalOrganisationAssociation/organisation'
23
+ Puree::XMLExtractor::Shared.organisation_header xpath_result
24
+ end
25
+
26
+ # @return [String, nil]
27
+ def qualification
28
+ types = {
29
+ '/dk/atira/pure/thesis/qualification/mphil' => 'MPhil',
30
+ '/dk/atira/pure/thesis/qualification/phd' => 'PhD',
31
+ '/dk/atira/pure/thesis/qualification/masters_by_research' => 'Masters by Research'
32
+ }
33
+ xpath_result = xpath_query_for_single_value '/qualification/uri'
34
+ types[xpath_result]
35
+ end
36
+
37
+ # @return [Array<String>]
38
+ def sponsors
39
+ xpath_query_for_multi_value '/sponsors/externalOrganisation/name'
40
+ end
41
+
42
+ end
43
+ end
44
+ end
data/spec/spec_helper.rb CHANGED
@@ -4,6 +4,7 @@ require 'nokogiri'
4
4
  require 'puree/version'
5
5
 
6
6
  require 'puree/util/date'
7
+ require 'puree/util/string'
7
8
 
8
9
  require 'puree/xml_extractor/shared'
9
10
  require 'puree/xml_extractor/base'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: puree
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adrian Albin-Clark
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-03-22 00:00:00.000000000 Z
11
+ date: 2017-03-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: http
@@ -73,10 +73,12 @@ files:
73
73
  - lib/puree/api/request.rb
74
74
  - lib/puree/extractor/collection.rb
75
75
  - lib/puree/extractor/dataset.rb
76
+ - lib/puree/extractor/doctoral_thesis.rb
76
77
  - lib/puree/extractor/download.rb
77
78
  - lib/puree/extractor/event.rb
78
79
  - lib/puree/extractor/extractor.rb
79
80
  - lib/puree/extractor/journal.rb
81
+ - lib/puree/extractor/masters_thesis.rb
80
82
  - lib/puree/extractor/organisation.rb
81
83
  - lib/puree/extractor/person.rb
82
84
  - lib/puree/extractor/project.rb
@@ -84,9 +86,11 @@ files:
84
86
  - lib/puree/extractor/publisher.rb
85
87
  - lib/puree/extractor/resource.rb
86
88
  - lib/puree/extractor/server.rb
89
+ - lib/puree/extractor/thesis.rb
87
90
  - lib/puree/model/address.rb
88
91
  - lib/puree/model/copyright_license.rb
89
92
  - lib/puree/model/dataset.rb
93
+ - lib/puree/model/doctoral_thesis.rb
90
94
  - lib/puree/model/download_header.rb
91
95
  - lib/puree/model/endeavour_person.rb
92
96
  - lib/puree/model/event.rb
@@ -96,6 +100,7 @@ files:
96
100
  - lib/puree/model/journal.rb
97
101
  - lib/puree/model/legal_condition.rb
98
102
  - lib/puree/model/link.rb
103
+ - lib/puree/model/masters_thesis.rb
99
104
  - lib/puree/model/model.rb
100
105
  - lib/puree/model/organisation.rb
101
106
  - lib/puree/model/organisation_header.rb
@@ -111,15 +116,22 @@ files:
111
116
  - lib/puree/model/spatial_point.rb
112
117
  - lib/puree/model/structure.rb
113
118
  - lib/puree/model/temporal_range.rb
119
+ - lib/puree/model/thesis.rb
114
120
  - lib/puree/util/date.rb
121
+ - lib/puree/util/string.rb
115
122
  - lib/puree/util/util.rb
116
123
  - lib/puree/version.rb
117
124
  - lib/puree/xml_extractor/base.rb
118
125
  - lib/puree/xml_extractor/collection.rb
119
126
  - lib/puree/xml_extractor/dataset.rb
127
+ - lib/puree/xml_extractor/doctoral_thesis.rb
120
128
  - lib/puree/xml_extractor/download.rb
121
129
  - lib/puree/xml_extractor/event.rb
122
130
  - lib/puree/xml_extractor/journal.rb
131
+ - lib/puree/xml_extractor/masters_thesis.rb
132
+ - lib/puree/xml_extractor/mixins/doi_mixin.rb
133
+ - lib/puree/xml_extractor/mixins/event_mixin.rb
134
+ - lib/puree/xml_extractor/mixins/pages_mixin.rb
123
135
  - lib/puree/xml_extractor/organisation.rb
124
136
  - lib/puree/xml_extractor/person.rb
125
137
  - lib/puree/xml_extractor/project.rb
@@ -128,6 +140,7 @@ files:
128
140
  - lib/puree/xml_extractor/resource.rb
129
141
  - lib/puree/xml_extractor/server.rb
130
142
  - lib/puree/xml_extractor/shared.rb
143
+ - lib/puree/xml_extractor/thesis.rb
131
144
  - lib/puree/xml_extractor/xml_extractor.rb
132
145
  - puree.gemspec
133
146
  - spec/download_http_spec.rb