mab2 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 14bac691353f086cfbed41622955c11ca4ff06a2
4
+ data.tar.gz: 8277e15586b7f2df280b65081e8def54082b1b34
5
+ SHA512:
6
+ metadata.gz: 971bb7293817bf77fb0de53a486a3200b1530c1d07a60ff9279ab1e7c00ecdb36fc990e6e9266afac1487f97787d870ec5e92c40587b34d7a05d66f6155f9e80
7
+ data.tar.gz: d4985798177570de52a038c6d53c47cfa628ee8360968a95aa0fe638de732255a4819e0aa6cdc2aefb52d1a4338dceabbd622a3586a8bb6549a1fb547e3e6ee5
data/.gitignore ADDED
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in mab2.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 Michael Sievers
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,29 @@
1
+ # Mab2
2
+
3
+ TODO: Write a gem description
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'mab2'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install mab2
18
+
19
+ ## Usage
20
+
21
+ TODO: Write usage instructions here
22
+
23
+ ## Contributing
24
+
25
+ 1. Fork it
26
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
27
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
28
+ 4. Push to the branch (`git push origin my-new-feature`)
29
+ 5. Create new Pull Request
data/Rakefile ADDED
@@ -0,0 +1,8 @@
1
+ require 'bundler/gem_tasks'
2
+ require 'rake/testtask'
3
+
4
+ Rake::TestTask.new do |t|
5
+ t.pattern = 'test/test_*.rb'
6
+ end
7
+
8
+ task :default => :test
@@ -0,0 +1,69 @@
1
+ require 'badgerfish'
2
+ require 'mab2/document_scope'
3
+
4
+ module Mab2
5
+ class Document
6
+
7
+ # we assume someone calls us like this Mab2::Document.new('<xml>...'</xml>')
8
+ def initialize(xml)
9
+ badgerfish_representation = Badgerfish::Parser.new.load(xml)
10
+
11
+ @controlfield = controlfield_from_badgerfish(badgerfish_representation)
12
+ @datafield = datafield_from_badgerfish(badgerfish_representation)
13
+ end
14
+
15
+ def controlfield(tag)
16
+ @controlfield[tag].chars
17
+ end
18
+
19
+ def datafield(tag, options = {})
20
+ Mab2::DocumentScope.new(self).datafield(tag, options)
21
+ end
22
+
23
+ # mabmapper uses field instead of datafield
24
+ def field(tag, options = {})
25
+ datafield(tag, options)
26
+ end
27
+
28
+ private
29
+
30
+ def controlfield_from_badgerfish(badgerfish)
31
+ hash = {}
32
+
33
+ badgerfish['OAI-PMH']['ListRecords']['record']['metadata']['record']['controlfield'].each do |controlfield|
34
+ hash[controlfield["@tag"]] = controlfield["$"]
35
+ end
36
+
37
+ hash
38
+ end
39
+
40
+ def datafield_from_badgerfish(badgerfish)
41
+ hash = {}
42
+
43
+ badgerfish['OAI-PMH']['ListRecords']['record']['metadata']['record']['datafield'].each do |datafield|
44
+ if hash[datafield["@tag"]].nil?
45
+ hash[datafield["@tag"]] = { datafield["@ind1"] => { datafield["@ind2"] => {} } }
46
+ elsif hash[datafield["@tag"]].is_a?(Hash)
47
+ hash[datafield["@tag"]] = [ hash[datafield["@tag"]] ]
48
+ end
49
+
50
+ if hash[datafield["@tag"]].is_a?(Array)
51
+ hash[datafield["@tag"]].push({ datafield["@ind1"] => { datafield["@ind2"] => {} } })
52
+ end
53
+
54
+ subfields = datafield['subfield'].is_a?(Array) ? datafield['subfield'] : [datafield['subfield']]
55
+
56
+ subfields.each do |subfield|
57
+ if hash[datafield["@tag"]].is_a?(Array)
58
+ hash[datafield["@tag"]].last[datafield["@ind1"]][datafield["@ind2"]][subfield["@code"]] = subfield["$"]
59
+ else
60
+ hash[datafield["@tag"]][datafield["@ind1"]][datafield["@ind2"]][subfield["@code"]] = subfield["$"]
61
+ end
62
+ end
63
+ end
64
+
65
+ hash
66
+ end
67
+
68
+ end
69
+ end
@@ -0,0 +1,62 @@
1
+ require 'active_support/core_ext'
2
+
3
+ module Mab2
4
+ class DocumentScope
5
+
6
+ attr_accessor :datafield, :document
7
+
8
+ def initialize(document)
9
+ @document = document
10
+ end
11
+
12
+ def datafield(tag, options = {})
13
+ @datafield = tag
14
+ @ind1 = options[:ind1] unless options[:ind1].nil?
15
+ @ind2 = options[:ind2] unless options[:ind2].nil?
16
+ self
17
+ end
18
+
19
+ def get
20
+ self
21
+ end
22
+
23
+ def subfield(code)
24
+ @subfield = code
25
+ self
26
+ end
27
+
28
+ def value
29
+ datafield = @document.instance_variable_get(:@datafield)
30
+ ind1 = ind1_accessor
31
+ ind2 = ind2_accessor
32
+ subfield = subfield_accessor
33
+
34
+ # handle case where ind1/ind2/subfield are arrays -> since we are in .value, simple grab the first non-nill one
35
+ ind1 = ind1.select { |indicator| !datafield.try(:[], @datafield).try(:[], indicator).nil? }.first if ind1.is_a?(Array)
36
+ ind2 = ind2.select { |indicator| !datafield.try(:[], @datafield).try(:[], ind1).try(:[], indicator).nil? }.first if ind2.is_a?(Array)
37
+ subfield = subfield.select { |_subfield| !datafield.try(:[], @datafield).try(:[], ind1).try(:[], ind2).try(:[], _subfield).nil? }.first if subfield.is_a?(Array)
38
+
39
+ if !(datafield.nil? || ind1.nil? || ind2.nil? || subfield.nil?)
40
+ datafield.try(:[], @datafield).try(:[], ind1).try(:[], ind2).try(:[], subfield)
41
+ end
42
+ end
43
+
44
+ def values
45
+ end
46
+
47
+ protected
48
+
49
+ def ind1_accessor
50
+ @ind1 || @document.instance_variable_get(:@datafield)[@datafield].keys.first unless @datafield.nil?
51
+ end
52
+
53
+ def ind2_accessor
54
+ @ind2 || @document.instance_variable_get(:@datafield)[@datafield][ind1_accessor].keys.first unless @datafield.nil? && ind1_accessor.nil?
55
+ end
56
+
57
+ def subfield_accessor
58
+ @subfield || @document.instance_variable_get(:@datafield)[@datafield][ind1_accessor][ind2_accessor].keys.first unless @datafield.nil? && ind1_accessor.nil? && ind2_accessor.nil?
59
+ end
60
+
61
+ end
62
+ end
@@ -0,0 +1,3 @@
1
+ module Mab2
2
+ VERSION = "0.0.1"
3
+ end
data/lib/mab2.rb ADDED
@@ -0,0 +1,2 @@
1
+ require 'mab2/document'
2
+ require 'mab2/version'
data/mab2.gemspec ADDED
@@ -0,0 +1,29 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'mab2/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = 'mab2'
8
+ spec.version = Mab2::VERSION
9
+ spec.authors = ["Michael Sievers"]
10
+ spec.email = ["michael_sievers@web.de"]
11
+ spec.description = %q{Simplifies access and handling of MAB documents}
12
+ spec.summary = %q{Implementation if the mabmapper DSL}
13
+ spec.homepage = 'https://github.com/msievers/mab2'
14
+ spec.license = 'MIT'
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_dependency 'badgerfish', '~> 0.0.3'
22
+
23
+ spec.add_development_dependency 'activesupport', '>= 3.2.0', '< 5.0.0'
24
+ spec.add_development_dependency 'bundler', '~> 1.3'
25
+ spec.add_development_dependency 'minitest', '~> 5.0.6'
26
+ spec.add_development_dependency 'pry', '~> 0.9.12.2'
27
+ spec.add_development_dependency 'pry-nav', '~> 0.2.3'
28
+ spec.add_development_dependency 'rake'
29
+ end
@@ -0,0 +1,18 @@
1
+ module TestControlfield
2
+
3
+ def test_controlfield_1
4
+ doc = Mab2::Document.new(load_mab('PAD01.000806191.PRIMO.xml'))
5
+ assert_equal doc.controlfield('SYS').join, '000806191'
6
+ end
7
+
8
+ def test_controlfield_2
9
+ doc = Mab2::Document.new(load_mab('PAD01.000806191.PRIMO.xml'))
10
+ assert_equal doc.controlfield('LDR').at(5), 'v'
11
+ end
12
+
13
+ def test_controlfield_3
14
+ doc = Mab2::Document.new(load_mab('PAD01.000806191.PRIMO.xml'))
15
+ assert_equal doc.controlfield('050').at(3), 'c'
16
+ end
17
+
18
+ end
@@ -0,0 +1,21 @@
1
+ module TestDatafield
2
+
3
+ # ind1 missing
4
+ def test_datafield_1
5
+ doc = Mab2::Document.new(load_mab('PAD01.000806191.PRIMO.xml'))
6
+ assert_equal '20000217', doc.field('LOC', ind2: ' ').subfield('k').get.value
7
+ end
8
+
9
+ # ind1 missing, first value of multi ind2/subfield query
10
+ def test_datafield_2
11
+ doc = Mab2::Document.new(load_mab('PAD01.000806191.PRIMO.xml'))
12
+ assert_equal 'Gockel, Simone', doc.field("100", ind2: ['1', '2']).subfield(['a','p','c','n','b']).get.value
13
+ end
14
+
15
+ def test_datafield_3
16
+ doc = Mab2::Document.new(load_mab('PAD01.000978177.PRIMO.xml'))
17
+ w = doc.field('PPE').subfield(['a', 'p']).get.values
18
+ end
19
+
20
+
21
+ end
@@ -0,0 +1,216 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
3
+ <ListRecords>
4
+ <record>
5
+ <header>
6
+ <identifier>aleph-publish:000806191</identifier>
7
+ </header>
8
+ <metadata>
9
+ <record xmlns="http://www.ddb.de/professionell/mabxml/mabxml-1.xsd">
10
+ <leader>00633vM2.01200024------h</leader>
11
+ <controlfield tag="LDR">00633vM2.01200024------h</controlfield>
12
+ <controlfield tag="FMT">MH</controlfield>
13
+ <datafield tag="001" ind1="-" ind2="1">
14
+ <subfield code="a">HT010843888</subfield>
15
+ </datafield>
16
+ <datafield tag="002" ind1="a" ind2="1">
17
+ <subfield code="a">19990825</subfield>
18
+ </datafield>
19
+ <datafield tag="003" ind1="-" ind2="1">
20
+ <subfield code="a">20070216</subfield>
21
+ </datafield>
22
+ <datafield tag="021" ind1="b" ind2="1">
23
+ <subfield code="a">HT010843875</subfield>
24
+ </datafield>
25
+ <controlfield tag="030">a|1uc||||||17</controlfield>
26
+ <datafield tag="036" ind1="a" ind2="1">
27
+ <subfield code="a">DE</subfield>
28
+ </datafield>
29
+ <datafield tag="037" ind1="b" ind2="1">
30
+ <subfield code="a">ger</subfield>
31
+ </datafield>
32
+ <controlfield tag="050">|||c||||||||||</controlfield>
33
+ <controlfield tag="051">sy||||||</controlfield>
34
+ <datafield tag="070" ind1="-" ind2="1">
35
+ <subfield code="a">294</subfield>
36
+ </datafield>
37
+ <datafield tag="080" ind1="-" ind2="1">
38
+ <subfield code="a">60</subfield>
39
+ </datafield>
40
+ <datafield tag="100" ind1="-" ind2="1">
41
+ <subfield code="p">Gockel, Simone</subfield>
42
+ <subfield code="d">1969-</subfield>
43
+ <subfield code="9">(DE-588)121333337</subfield>
44
+ </datafield>
45
+ <datafield tag="331" ind1="-" ind2="1">
46
+ <subfield code="a">Perfluoralkylsubstituierte Tellur(IV)Verbindungen</subfield>
47
+ </datafield>
48
+ <datafield tag="359" ind1="-" ind2="1">
49
+ <subfield code="a">von Simone Gockel</subfield>
50
+ </datafield>
51
+ <datafield tag="403" ind1="-" ind2="1">
52
+ <subfield code="a">[Mikrofiche-Ausg.]</subfield>
53
+ </datafield>
54
+ <datafield tag="410" ind1="-" ind2="1">
55
+ <subfield code="a">Marburg</subfield>
56
+ </datafield>
57
+ <datafield tag="412" ind1="-" ind2="1">
58
+ <subfield code="a">Tectum-Verl.</subfield>
59
+ </datafield>
60
+ <datafield tag="425" ind1="a" ind2="1">
61
+ <subfield code="a">1999</subfield>
62
+ </datafield>
63
+ <datafield tag="433" ind1="-" ind2="1">
64
+ <subfield code="a">VIII, 121 S. : graph. Darst.</subfield>
65
+ </datafield>
66
+ <datafield tag="519" ind1="-" ind2="1">
67
+ <subfield code="p">Zugl.</subfield>
68
+ <subfield code="a">Bochum, Univ., Diss., 1998</subfield>
69
+ </datafield>
70
+ <datafield tag="540" ind1="a" ind2="1">
71
+ <subfield code="a">3-8288-0675-9</subfield>
72
+ </datafield>
73
+ <datafield tag="610" ind1="-" ind2="1">
74
+ <subfield code="a">Mikrofiche-Ausg.:</subfield>
75
+ </datafield>
76
+ <datafield tag="611" ind1="a" ind2="1">
77
+ <subfield code="a">Marburg</subfield>
78
+ </datafield>
79
+ <datafield tag="613" ind1="a" ind2="1">
80
+ <subfield code="a">Tectum-Verl.</subfield>
81
+ </datafield>
82
+ <datafield tag="621" ind1="-" ind2="1">
83
+ <subfield code="a">Edition Wissenschaft : Reihe Chemie ; 240</subfield>
84
+ </datafield>
85
+ <datafield tag="623" ind1="-" ind2="1">
86
+ <subfield code="a">HT006670284</subfield>
87
+ </datafield>
88
+ <datafield tag="625" ind1="-" ind2="1">
89
+ <subfield code="a">240</subfield>
90
+ </datafield>
91
+ <datafield tag="626" ind1="-" ind2="1">
92
+ <subfield code="a">240</subfield>
93
+ </datafield>
94
+ <datafield tag="634" ind1="a" ind2="1">
95
+ <subfield code="a">3-8288-0675-9</subfield>
96
+ </datafield>
97
+ <datafield tag="637" ind1="-" ind2="1">
98
+ <subfield code="a">2 Mikrofiches : 24x</subfield>
99
+ </datafield>
100
+ <datafield tag="673" ind1="c" ind2="1">
101
+ <subfield code="a">Bochum</subfield>
102
+ </datafield>
103
+ <datafield tag="902" ind1="-" ind2="1">
104
+ <subfield code="s">Tellurorganische Verbindungen</subfield>
105
+ <subfield code="9">(DE-588)4184674-6</subfield>
106
+ </datafield>
107
+ <datafield tag="902" ind1="-" ind2="1">
108
+ <subfield code="s">Perfluoralkylgruppe</subfield>
109
+ <subfield code="9">(DE-588)4337083-4</subfield>
110
+ </datafield>
111
+ <datafield tag="902" ind1="-" ind2="1">
112
+ <subfield code="s">Mikroform</subfield>
113
+ <subfield code="9">(DE-588)4039216-8</subfield>
114
+ </datafield>
115
+ <datafield tag="903" ind1="-" ind2="1">
116
+ <subfield code="a">213</subfield>
117
+ </datafield>
118
+ <controlfield tag="SYS">000806191</controlfield>
119
+ <datafield tag="PSW" ind1="-" ind2="1">
120
+ <subfield code="s">Mikrobild</subfield>
121
+ <subfield code="9">(DE-588)4039216-8</subfield>
122
+ </datafield>
123
+ <datafield tag="PSW" ind1="-" ind2="1">
124
+ <subfield code="s">Mikrodokumentation</subfield>
125
+ <subfield code="9">(DE-588)4039216-8</subfield>
126
+ </datafield>
127
+ <datafield tag="PSW" ind1="-" ind2="1">
128
+ <subfield code="s">Mikrokopie</subfield>
129
+ <subfield code="9">(DE-588)4039216-8</subfield>
130
+ </datafield>
131
+ <datafield tag="PSW" ind1="-" ind2="1">
132
+ <subfield code="s">Mikroformen</subfield>
133
+ <subfield code="9">(DE-588)4039216-8</subfield>
134
+ </datafield>
135
+ <datafield tag="PSW" ind1="-" ind2="1">
136
+ <subfield code="s">Fiche</subfield>
137
+ <subfield code="h">Formschlagwort</subfield>
138
+ <subfield code="9">(DE-588)4039216-8</subfield>
139
+ </datafield>
140
+ <datafield tag="PSW" ind1="-" ind2="1">
141
+ <subfield code="s">Mikrofiche</subfield>
142
+ <subfield code="h">Formschlagwort</subfield>
143
+ <subfield code="9">(DE-588)4039216-8</subfield>
144
+ </datafield>
145
+ <datafield tag="PSW" ind1="-" ind2="1">
146
+ <subfield code="s">Mikrofilm</subfield>
147
+ <subfield code="h">Formschlagwort</subfield>
148
+ <subfield code="9">(DE-588)4039216-8</subfield>
149
+ </datafield>
150
+ <datafield tag="PSW" ind1="-" ind2="1">
151
+ <subfield code="s">Microform</subfield>
152
+ <subfield code="9">(DE-588)4039216-8</subfield>
153
+ </datafield>
154
+ <datafield tag="PSW" ind1="-" ind2="1">
155
+ <subfield code="s">Mikrobild</subfield>
156
+ <subfield code="9">(DE-588)4039216-8</subfield>
157
+ </datafield>
158
+ <datafield tag="PSW" ind1="-" ind2="1">
159
+ <subfield code="s">Mikrodokumentation</subfield>
160
+ <subfield code="9">(DE-588)4039216-8</subfield>
161
+ </datafield>
162
+ <datafield tag="PSW" ind1="-" ind2="1">
163
+ <subfield code="s">Mikrokopie</subfield>
164
+ <subfield code="9">(DE-588)4039216-8</subfield>
165
+ </datafield>
166
+ <datafield tag="PSW" ind1="-" ind2="1">
167
+ <subfield code="s">Mikroformen</subfield>
168
+ <subfield code="9">(DE-588)4039216-8</subfield>
169
+ </datafield>
170
+ <datafield tag="PSW" ind1="-" ind2="1">
171
+ <subfield code="s">Fiche</subfield>
172
+ <subfield code="h">Formschlagwort</subfield>
173
+ <subfield code="9">(DE-588)4039216-8</subfield>
174
+ </datafield>
175
+ <datafield tag="PSW" ind1="-" ind2="1">
176
+ <subfield code="s">Mikrofiche</subfield>
177
+ <subfield code="h">Formschlagwort</subfield>
178
+ <subfield code="9">(DE-588)4039216-8</subfield>
179
+ </datafield>
180
+ <datafield tag="PSW" ind1="-" ind2="1">
181
+ <subfield code="s">Mikrofilm</subfield>
182
+ <subfield code="h">Formschlagwort</subfield>
183
+ <subfield code="9">(DE-588)4039216-8</subfield>
184
+ </datafield>
185
+ <datafield tag="PSW" ind1="-" ind2="1">
186
+ <subfield code="s">Microform</subfield>
187
+ <subfield code="9">(DE-588)4039216-8</subfield>
188
+ </datafield>
189
+ <datafield tag="700" ind1=" " ind2=" ">
190
+ <subfield code="a">UUN</subfield>
191
+ </datafield>
192
+ <datafield tag="OWN" ind1=" " ind2=" ">
193
+ <subfield code="a">P0001</subfield>
194
+ </datafield>
195
+ <datafield tag="PLK" ind1=" " ind2=" ">
196
+ <subfield code="a">SRU</subfield>
197
+ <subfield code="l">PAD01</subfield>
198
+ <subfield code="b">000677742</subfield>
199
+ <subfield code="m">240.^Perfluoralkylsubstituierte Tellur(IV)Verbindungen.^[Mikrofiche-Ausg.].^1999</subfield>
200
+ <subfield code="n">Edition Wissenschaft / Reihe Chemie.^</subfield>
201
+ </datafield>
202
+ <datafield tag="LOC" ind1=" " ind2=" ">
203
+ <subfield code="m">MKF</subfield>
204
+ <subfield code="a">P0001</subfield>
205
+ <subfield code="b">93</subfield>
206
+ <subfield code="d">UUN1142</subfield>
207
+ <subfield code="i">1999.2495-1999.2496</subfield>
208
+ <subfield code="n">25</subfield>
209
+ <subfield code="k">20000217</subfield>
210
+ <subfield code="5">122722-10</subfield>
211
+ </datafield>
212
+ </record>
213
+ </metadata>
214
+ </record>
215
+ </ListRecords>
216
+ </OAI-PMH>
@@ -0,0 +1,203 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
3
+ <ListRecords>
4
+ <record>
5
+ <header>
6
+ <identifier>aleph-publish:000978177</identifier>
7
+ </header>
8
+ <metadata>
9
+ <record xmlns="http://www.ddb.de/professionell/mabxml/mabxml-1.xsd">
10
+ <leader>00694nM2.01200024------h</leader>
11
+ <controlfield tag="LDR">00694nM2.01200024------h</controlfield>
12
+ <controlfield tag="FMT">MH</controlfield>
13
+ <datafield tag="001" ind1="-" ind2="1">
14
+ <subfield code="a">HT015334378</subfield>
15
+ </datafield>
16
+ <datafield tag="002" ind1="a" ind2="1">
17
+ <subfield code="a">20071106</subfield>
18
+ </datafield>
19
+ <datafield tag="003" ind1="-" ind2="1">
20
+ <subfield code="a">20080813</subfield>
21
+ </datafield>
22
+ <datafield tag="026" ind1="-" ind2="1">
23
+ <subfield code="a">GBV546190871</subfield>
24
+ </datafield>
25
+ <controlfield tag="030">a|1uc||||||17</controlfield>
26
+ <datafield tag="036" ind1="a" ind2="1">
27
+ <subfield code="a">DE</subfield>
28
+ </datafield>
29
+ <datafield tag="037" ind1="b" ind2="1">
30
+ <subfield code="a">ger</subfield>
31
+ </datafield>
32
+ <controlfield tag="050">a|||||||||||||</controlfield>
33
+ <controlfield tag="051">s|||||||</controlfield>
34
+ <datafield tag="070" ind1="-" ind2="1">
35
+ <subfield code="a">465</subfield>
36
+ </datafield>
37
+ <datafield tag="070" ind1="b" ind2="1">
38
+ <subfield code="a">82</subfield>
39
+ </datafield>
40
+ <datafield tag="080" ind1="-" ind2="1">
41
+ <subfield code="a">60</subfield>
42
+ </datafield>
43
+ <datafield tag="100" ind1="-" ind2="1">
44
+ <subfield code="p">Beyme, Klaus &lt;&lt;von&gt;&gt;</subfield>
45
+ <subfield code="d">1934-</subfield>
46
+ <subfield code="9">(DE-588)117757241</subfield>
47
+ </datafield>
48
+ <datafield tag="331" ind1="-" ind2="1">
49
+ <subfield code="a">Theorie der Politik im 20. Jahrhundert</subfield>
50
+ </datafield>
51
+ <datafield tag="335" ind1="-" ind2="1">
52
+ <subfield code="a">von der Moderne zur Postmoderne</subfield>
53
+ </datafield>
54
+ <datafield tag="359" ind1="-" ind2="1">
55
+ <subfield code="a">Klaus von Beyme</subfield>
56
+ </datafield>
57
+ <datafield tag="403" ind1="-" ind2="1">
58
+ <subfield code="a">Erw. Ausg.</subfield>
59
+ </datafield>
60
+ <datafield tag="410" ind1="-" ind2="1">
61
+ <subfield code="a">Frankfurt am Main</subfield>
62
+ </datafield>
63
+ <datafield tag="412" ind1="-" ind2="1">
64
+ <subfield code="a">Suhrkamp</subfield>
65
+ </datafield>
66
+ <datafield tag="425" ind1="a" ind2="1">
67
+ <subfield code="a">2007</subfield>
68
+ </datafield>
69
+ <datafield tag="433" ind1="-" ind2="1">
70
+ <subfield code="a">450 S.</subfield>
71
+ </datafield>
72
+ <datafield tag="451" ind1="-" ind2="1">
73
+ <subfield code="a">Suhrkamp-Taschenbuch Wissenschaft ; 969</subfield>
74
+ </datafield>
75
+ <datafield tag="453" ind1="-" ind2="1">
76
+ <subfield code="a">HT002091695</subfield>
77
+ </datafield>
78
+ <datafield tag="455" ind1="-" ind2="1">
79
+ <subfield code="a">969</subfield>
80
+ </datafield>
81
+ <datafield tag="456" ind1="-" ind2="1">
82
+ <subfield code="a">969</subfield>
83
+ </datafield>
84
+ <datafield tag="517" ind1="-" ind2="1">
85
+ <subfield code="a">Literaturverz. S. 409 - 444</subfield>
86
+ </datafield>
87
+ <datafield tag="540" ind1="a" ind2="1">
88
+ <subfield code="a">978-3-518-28569-5</subfield>
89
+ <subfield code="b">kart. : EUR 16.00</subfield>
90
+ </datafield>
91
+ <datafield tag="700" ind1="g" ind2="1">
92
+ <subfield code="a">MC 6000</subfield>
93
+ </datafield>
94
+ <datafield tag="700" ind1="g" ind2="1">
95
+ <subfield code="a">MD 1000</subfield>
96
+ </datafield>
97
+ <datafield tag="700" ind1="g" ind2="1">
98
+ <subfield code="a">MS 4350</subfield>
99
+ </datafield>
100
+ <datafield tag="902" ind1="-" ind2="1">
101
+ <subfield code="s">Politische Theorie</subfield>
102
+ <subfield code="9">(DE-588)4046563-9</subfield>
103
+ </datafield>
104
+ <datafield tag="902" ind1="-" ind2="1">
105
+ <subfield code="z">Geschichte 1900-2000</subfield>
106
+ </datafield>
107
+ <controlfield tag="SYS">000978177</controlfield>
108
+ <datafield tag="PSW" ind1="-" ind2="1">
109
+ <subfield code="s">Politik</subfield>
110
+ <subfield code="x">Theorie</subfield>
111
+ <subfield code="9">(DE-588)4046563-9</subfield>
112
+ </datafield>
113
+ <datafield tag="PSW" ind1="-" ind2="1">
114
+ <subfield code="s">Politiktheorie</subfield>
115
+ <subfield code="9">(DE-588)4046563-9</subfield>
116
+ </datafield>
117
+ <datafield tag="PSW" ind1="-" ind2="1">
118
+ <subfield code="s">Politische Theorien</subfield>
119
+ <subfield code="9">(DE-588)4046563-9</subfield>
120
+ </datafield>
121
+ <datafield tag="PSW" ind1="-" ind2="1">
122
+ <subfield code="s">Politik</subfield>
123
+ <subfield code="x">Theorie</subfield>
124
+ <subfield code="9">(DE-588)4046563-9</subfield>
125
+ </datafield>
126
+ <datafield tag="PSW" ind1="-" ind2="1">
127
+ <subfield code="s">Politiktheorie</subfield>
128
+ <subfield code="9">(DE-588)4046563-9</subfield>
129
+ </datafield>
130
+ <datafield tag="PSW" ind1="-" ind2="1">
131
+ <subfield code="s">Politische Theorien</subfield>
132
+ <subfield code="9">(DE-588)4046563-9</subfield>
133
+ </datafield>
134
+ <datafield tag="PPE" ind1="-" ind2="1">
135
+ <subfield code="p">Bajme, Klaus</subfield>
136
+ <subfield code="d">1934-</subfield>
137
+ <subfield code="9">(DE-588)117757241</subfield>
138
+ </datafield>
139
+ <datafield tag="PPE" ind1="-" ind2="1">
140
+ <subfield code="p">Beyme, Klaus</subfield>
141
+ <subfield code="d">1934-</subfield>
142
+ <subfield code="9">(DE-588)117757241</subfield>
143
+ </datafield>
144
+ <datafield tag="PPE" ind1="-" ind2="1">
145
+ <subfield code="p">Beyme, K. &lt;&lt;von&gt;&gt;</subfield>
146
+ <subfield code="d">1934-</subfield>
147
+ <subfield code="9">(DE-588)117757241</subfield>
148
+ </datafield>
149
+ <datafield tag="PPE" ind1="-" ind2="1">
150
+ <subfield code="p">Bajme, Klaus</subfield>
151
+ <subfield code="d">1934-</subfield>
152
+ <subfield code="9">(DE-588)117757241</subfield>
153
+ </datafield>
154
+ <datafield tag="PPE" ind1="-" ind2="1">
155
+ <subfield code="p">Beyme, Klaus</subfield>
156
+ <subfield code="d">1934-</subfield>
157
+ <subfield code="9">(DE-588)117757241</subfield>
158
+ </datafield>
159
+ <datafield tag="PPE" ind1="-" ind2="1">
160
+ <subfield code="p">Beyme, K. &lt;&lt;von&gt;&gt;</subfield>
161
+ <subfield code="d">1934-</subfield>
162
+ <subfield code="9">(DE-588)117757241</subfield>
163
+ </datafield>
164
+ <datafield tag="700" ind1=" " ind2=" ">
165
+ <subfield code="a">OVA</subfield>
166
+ </datafield>
167
+ <datafield tag="OWN" ind1=" " ind2=" ">
168
+ <subfield code="a">P0001</subfield>
169
+ <subfield code="n">466 - Paderborn: UB</subfield>
170
+ </datafield>
171
+ <datafield tag="655" ind1=" " ind2=" ">
172
+ <subfield code="y">Theorie der Politik im 20. Jahrhundert</subfield>
173
+ <subfield code="t">VIEW</subfield>
174
+ <subfield code="u">http://digitool.hbz-nrw.de:1801/webclient/DeliveryManager?pid=2280738&amp;custom_att_2=simple_viewer</subfield>
175
+ </datafield>
176
+ <datafield tag="TXT" ind1=" " ind2=" ">
177
+ <subfield code="a">OCR-TEXT: INHALT VORWORT 9 EINLEITUNG 11 I. THEORIEN DER MODERNE POLITISCHE STEUERUNG IN EINER DIFFERENZIERTEN GESELLSCHAFT 1. EPOCHEN UND ZAESUREN: VON DER PRAEMODERNE ZUR MODERNE 29 2. GRUNDPRINZIPIEN DER THEORIEBILDUNG DER MODERNE: DURKHEIM, WEBER, PARETO, PARSONS, LUHMANN 44 A) DIE DIFFERENZIERUNG VON THEORIE UND PRAXIS, VON SOZIALWISSENSCHAFTLICHEM ERKENNEN UND POLITISCHEM HANDELN 45 B) DIE DIFFERENZIERUNG VON GESCHICHTE UND EVOLUTION, DIE AUFGABE EINER TELEOLOGISCHEN GESCHICHTSBETRACHTUNG 58 C) DIE ENTWICKLUNG DES SYSTEMATISCHEN VERGLEICHS UND DER GLEICHBERECHTIGUNG VON DIFFERENZ- UND UEBEREINSTIMMUNGSMETHODE 6Y D) DIE DIFFERENZIERUNG DER LEBENSBEREICHE UND DER VERZICHT AUF DEN PRIMAT DER POLITIK 74 3. THEORIEN DER POLITISCHEN STEUERUNG 90 A) VON DER STAATSLEHRE ZUR THEORIE DES POLITISCHEN SYSTEMS 90 B) DER KAMPF UM DEN PRIMAT DER POLITIK IN DER GESELLSCHAFT: CARL SCHMITT 93 C) DIE UEBERWINDUNG DES STAATLICHEN STEUERUNGSDEFIZITS DURCH SOZIALISTISCHE TRANSFORMATION: VOM NEOMARXISMUS ZUM POSTMARXISMUS 102 KAPITALISMUSKRITIK UND REALER SOZIALISMUS 102 DER MARXISMUS UND DIE THEORETISCHEN PRAEMISSEN DER SOZIALWISSENSCHAFTLICHEN MODERNE 104 VERLAGERUNG DER KRISENSZENARIOS VOM WIRTSCHAFTS SYSTEM UEBER DIE POLITIK IN DEN KULTURELLEN SEKTOR 111 REGULATIONSTHEORIE UND POSTMARXISMUS 120 D) STUFEN DER NEUEN BESCHEIDENHEIT: STAATLICHE HILFE ZUR GESELLSCHAFTLICHEN SELBSTSTEUERUNG 127 VON DER PLANUNG ZUR STEUERUNG 127 DER LIBERALE NEOKORPORATISMUS 129 GESELLSCHAFTLICHE SELBSTSTEUERUNG 139 II. THEORIEN DER POSTMODERNE HILFE ZUR SELBSTSTEUERUNG IN EINER FRAGMENTIERTEN WELT OHNE ZENTRUM UND NORMKONSENS 1. POSTMODERNES DENKEN 147 A) EPOCHEN UND ZAESUREN: VON DER MODERNE ZUR POSTMODERNE 147 DER UMSCHLAG IN POSTMODERNES DENKEN 149 GIBT ES EINE POSTMODERNE GESELLSCHAFT? 157 B) LEBENSFUEHRUNG ALS KUNST: POSTMODERNES DENKEN ALS KUENSTLERISCHE REVOLTE GEGEN DEN RATIONALISMUS DER WISSENSCHAFT 161 DIE ANTIRATIONALISTISCHE REVOLTE AUS DEM GEIST DER KUNST 161</subfield>
178
+ </datafield>
179
+ <datafield tag="TXT" ind1=" " ind2=" ">
180
+ <subfield code="a">DIE REVOLTE GEGEN DEN STRUKTURALISMUS UND DEN KRITISCHEN RATIONALISMUS 166 C) GRUNDPRINZIPIEN POSTMODERNER THEORIEBILDUNG 172 ALLGEMEINE GRUNDPRINZIPIEN 172 DIE KONTINUITAET DER PRINZIPIEN VON DER MODERNE ZUR POSTMODERNE 181 DER BEITRAG DES POSTMODERNEN DENKENS ZUR THEORIE DER POLITIK 187 2. THEORIEN DER SELBSTORGANISATION VON SYSTEMEN (AUTOPOIESIS) 201 A) THEORIEBILDUNG IN DEN NATURWISSENSCHAFTEN 202 B) WANDEL, CHAOS, KATASTROPHEN 2I5 C) UEBERTRAGBARKEIT AUTOPOIETISCHER BEGRIFFE AUF SOZIALE SYSTEME 222 D) POLITISCHE IMPLIKATIONEN DER AUTOPOIESIS-THEORIEN ... 226 E) NIKLAS LUHMANNS ZWEITER PARADIGMAWANDEL 235 3. ZWISCHEN MODERNE UND POSTMODERNE: LEBENSWELTLICHE ANSAETZE IM KAMPF GEGEN DIE RATIONALISTISCH HALBIERTE MODERNE 252 A) DIE WIEDERENTDECKUNG DER LEBENSWELT 252 B) LEBENSWELT UND SYSTEM BEI JUERGEN HABERMAS 260 C) POSTMATERIALISMUS UND THEORIE DES WERTEWANDELS 27" D) NEUE SOZIALE BEWEGUNGEN ALS HOFFNUNGSTRAEGER DES LEBENSWEISEPARADIGMAS? 286 E) ANSAETZE FEMINISTISCHER THEORIE DER POLITIK ZWISCHEN MODERNE UND POSTMODERNE 296 FEMINISMUS - EINE SOZIALE BEWEGUNG WIE ANDERE? . .. 296 EINE FEMINISTISCHE WISSENSCHAFTSLEHRE? 302 ANNAEHERUNGEN AN EINE POLITISCHE THEORIE DES FEMINISMUS 306 GYNOZENTRISCHER FEMINISMUS UND POSTMODERNISMUS 310 POSTMODERNISMUS UND POSTFEMINISMUS 316 F) THEORIE DER RISIKOGESELLSCHAFT 321 DIE QUADRATUR DES ZIRKELS: RESUEMEE UEBER FRAGMENTIERTES DENKEN BEDINGUNGEN DES THEORIENWANDELS 330 DIE SUCHE NACH DEM STANDORT DER POLITIKWISSENSCHAFT IM STREIT DER PARADIGMEN 337 ANHANG AUSBLICK INS 21. JAHRHUNDERT: »FROM POST TO NEO. DIE ENTWICKLUNG DER POLITISCHEN THEORIEN NACH DEM ANGEBLICHEN ENDE DER GROSSEN DEBATTEN 363 BIBLIOGRAPHIE 409 INDEX 445</subfield>
181
+ </datafield>
182
+ <datafield tag="PLK" ind1=" " ind2=" ">
183
+ <subfield code="a">SRU</subfield>
184
+ <subfield code="l">PAD01</subfield>
185
+ <subfield code="b">000296324</subfield>
186
+ <subfield code="m">969.^Theorie der Politik im 20. Jahrhundert.^Erw. Ausg..^2007</subfield>
187
+ <subfield code="n">Suhrkamp-Taschenbuch Wissenschaft.^1968</subfield>
188
+ </datafield>
189
+ <datafield tag="LOC" ind1=" " ind2=" ">
190
+ <subfield code="m">BOOK</subfield>
191
+ <subfield code="a">P0001</subfield>
192
+ <subfield code="b">31</subfield>
193
+ <subfield code="d">OVA1389</subfield>
194
+ <subfield code="i">07/12689</subfield>
195
+ <subfield code="n">20</subfield>
196
+ <subfield code="k">20071205</subfield>
197
+ <subfield code="5">997721-10</subfield>
198
+ </datafield>
199
+ </record>
200
+ </metadata>
201
+ </record>
202
+ </ListRecords>
203
+ </OAI-PMH>
@@ -0,0 +1,12 @@
1
+ # silence that minitest related error about minitest/autorun (since minitest version >= 5)
2
+ gem 'minitest'
3
+
4
+ require 'active_support/core_ext'
5
+ require 'mab2'
6
+ require 'minitest/autorun'
7
+ require 'pry'
8
+
9
+ def load_mab(filename)
10
+ mab_file_name = File.expand_path("../mab_files/#{filename}", __FILE__)
11
+ File.read(mab_file_name)
12
+ end
data/test/test_mab2.rb ADDED
@@ -0,0 +1,12 @@
1
+ require File.expand_path '../test_helper.rb', __FILE__
2
+
3
+ class TestMab2 < Minitest::Test
4
+ end
5
+
6
+ # require and include all mabmapper test modules
7
+ Dir.glob(File.expand_path '../mab2/test_*.rb', __FILE__).each do |filename|
8
+ require filename
9
+ TestMab2.instance_eval do
10
+ include File.basename(filename, '.rb').camelize.constantize
11
+ end
12
+ end
metadata ADDED
@@ -0,0 +1,170 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mab2
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Michael Sievers
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-09-25 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: badgerfish
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: 0.0.3
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: 0.0.3
27
+ - !ruby/object:Gem::Dependency
28
+ name: activesupport
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: 3.2.0
34
+ - - <
35
+ - !ruby/object:Gem::Version
36
+ version: 5.0.0
37
+ type: :development
38
+ prerelease: false
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - '>='
42
+ - !ruby/object:Gem::Version
43
+ version: 3.2.0
44
+ - - <
45
+ - !ruby/object:Gem::Version
46
+ version: 5.0.0
47
+ - !ruby/object:Gem::Dependency
48
+ name: bundler
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ~>
52
+ - !ruby/object:Gem::Version
53
+ version: '1.3'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ~>
59
+ - !ruby/object:Gem::Version
60
+ version: '1.3'
61
+ - !ruby/object:Gem::Dependency
62
+ name: minitest
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ~>
66
+ - !ruby/object:Gem::Version
67
+ version: 5.0.6
68
+ type: :development
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ~>
73
+ - !ruby/object:Gem::Version
74
+ version: 5.0.6
75
+ - !ruby/object:Gem::Dependency
76
+ name: pry
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ~>
80
+ - !ruby/object:Gem::Version
81
+ version: 0.9.12.2
82
+ type: :development
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ~>
87
+ - !ruby/object:Gem::Version
88
+ version: 0.9.12.2
89
+ - !ruby/object:Gem::Dependency
90
+ name: pry-nav
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ~>
94
+ - !ruby/object:Gem::Version
95
+ version: 0.2.3
96
+ type: :development
97
+ prerelease: false
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ~>
101
+ - !ruby/object:Gem::Version
102
+ version: 0.2.3
103
+ - !ruby/object:Gem::Dependency
104
+ name: rake
105
+ requirement: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ type: :development
111
+ prerelease: false
112
+ version_requirements: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - '>='
115
+ - !ruby/object:Gem::Version
116
+ version: '0'
117
+ description: Simplifies access and handling of MAB documents
118
+ email:
119
+ - michael_sievers@web.de
120
+ executables: []
121
+ extensions: []
122
+ extra_rdoc_files: []
123
+ files:
124
+ - .gitignore
125
+ - Gemfile
126
+ - LICENSE.txt
127
+ - README.md
128
+ - Rakefile
129
+ - lib/mab2.rb
130
+ - lib/mab2/document.rb
131
+ - lib/mab2/document_scope.rb
132
+ - lib/mab2/version.rb
133
+ - mab2.gemspec
134
+ - test/mab2/test_controlfield.rb
135
+ - test/mab2/test_datafield.rb
136
+ - test/mab_files/PAD01.000806191.PRIMO.xml
137
+ - test/mab_files/PAD01.000978177.PRIMO.xml
138
+ - test/test_helper.rb
139
+ - test/test_mab2.rb
140
+ homepage: https://github.com/msievers/mab2
141
+ licenses:
142
+ - MIT
143
+ metadata: {}
144
+ post_install_message:
145
+ rdoc_options: []
146
+ require_paths:
147
+ - lib
148
+ required_ruby_version: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - '>='
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ required_rubygems_version: !ruby/object:Gem::Requirement
154
+ requirements:
155
+ - - '>='
156
+ - !ruby/object:Gem::Version
157
+ version: '0'
158
+ requirements: []
159
+ rubyforge_project:
160
+ rubygems_version: 2.0.6
161
+ signing_key:
162
+ specification_version: 4
163
+ summary: Implementation if the mabmapper DSL
164
+ test_files:
165
+ - test/mab2/test_controlfield.rb
166
+ - test/mab2/test_datafield.rb
167
+ - test/mab_files/PAD01.000806191.PRIMO.xml
168
+ - test/mab_files/PAD01.000978177.PRIMO.xml
169
+ - test/test_helper.rb
170
+ - test/test_mab2.rb