dm-xml-adapter 0.574 → 0.575

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. data/lib/dm-xml-adapter.rb +16 -18
  2. metadata +21 -35
@@ -9,7 +9,8 @@ require 'tempfile'
9
9
  require 'simple_memoize'
10
10
  require 'log4r'
11
11
 
12
- #
12
+ # the XML adapter is an adapter for DataMapper that allows you to store
13
+ # data in XML files. beware, it's not transactionally safe.
13
14
  module DataMapper::Adapters
14
15
 
15
16
  class XmlAdapterCache
@@ -31,8 +32,7 @@ module DataMapper::Adapters
31
32
  return @mtimes[file]
32
33
  end
33
34
 
34
- def put(classname, id, object)
35
-
35
+ def put(classname, id, object)
36
36
  # check to see if we have a classname entry
37
37
  if (@classes[classname] == nil)
38
38
  @classes[classname] = Hash.new
@@ -51,8 +51,7 @@ module DataMapper::Adapters
51
51
 
52
52
  def get(classname, id)
53
53
  hash = @classes[classname]
54
- object = hash[id]
55
- return object
54
+ return hash[id]
56
55
  end
57
56
  end
58
57
 
@@ -80,10 +79,9 @@ module DataMapper::Adapters
80
79
  end
81
80
 
82
81
  def create(resources)
83
- class_name = resources.first.class.to_s
84
82
  key = resources.first.model.key.first.name
85
83
  resources.each do |resource|
86
- id = find_free_id_for(class_name)
84
+ id = find_free_id_for(resources.first.class.to_s)
87
85
  # find name of key attribute
88
86
  resource.attributes[key] = id
89
87
  resource.instance_variable_set("@" + key.to_s, id)
@@ -145,9 +143,9 @@ module DataMapper::Adapters
145
143
  if ! File.exists?(directory)
146
144
  return []
147
145
  end
146
+
148
147
  objects = []
149
- Dir.entries(directory).select {|file| file.match(/\.xml$/) }.each do |filename|
150
- filename = directory + "/" + filename
148
+ Dir[directory + "/*.xml"].each do |filename|
151
149
  # see if we have a nice cached version
152
150
  mtime = File.mtime(filename)
153
151
  cache_mtime = @cache.get_mtime(filename)
@@ -179,12 +177,11 @@ module DataMapper::Adapters
179
177
  def file_to_object(file, model)
180
178
  model_name = model.to_s
181
179
  # allocate new object to receive these fields
182
- if (model_name.match(/\:\:/))
183
- modname, clazz = model_name.split("::")
180
+ if (model_name.match(/(.*)\:\:(.*)/))
181
+ modname, clazz = [$1, $2]
184
182
  new_obj = Kernel.const_get(modname).const_get(clazz).new
185
183
  else
186
- clazz = model_name
187
- new_obj = Kernel.const_get(clazz).new
184
+ new_obj = Kernel.const_get(model_name).new
188
185
  end
189
186
 
190
187
  # iterate over children
@@ -253,19 +250,20 @@ module DataMapper::Adapters
253
250
  # iterate over the resource and figure out the fields
254
251
  xml.tag!("RubyObject", :class => resource.model.to_s) do
255
252
  resource.model.properties.each do |property|
256
- value = resource.instance_variable_get("@" + property.name.to_s)
253
+ property_name = property.name.to_s
254
+ value = resource.instance_variable_get("@" + property_name)
257
255
  # special case for false
258
256
  if property.primitive == TrueClass and value == false
259
- xml.tag!(property.name.to_s, false, :class => FalseClass.to_s)
257
+ xml.tag!(property_name, false, :class => FalseClass.to_s)
260
258
  elsif (property.primitive == BigDecimal and value != nil)
261
- xml.tag!(property.name.to_s, value.to_s("F"), :class => BigDecimal)
259
+ xml.tag!(property_name, value.to_s("F"), :class => BigDecimal)
262
260
  elsif (value != nil)
263
- xml.tag!(property.name.to_s, value, :class => property.primitive)
261
+ xml.tag!(property_name, value, :class => property.primitive)
264
262
  end
265
263
  end
266
264
  end
267
265
 
268
- xmlfile = File.new(class_name_to_file(resource.class.to_s, resource.key.first), "w")
266
+ xmlfile = File.new(class_name_to_file(resource_class, resource_key), "w")
269
267
  tempfile = Tempfile.new("dm-xml-adapter", Dir.tmpdir())
270
268
  tempfile.puts out_string
271
269
  tempfile.close
metadata CHANGED
@@ -1,11 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dm-xml-adapter
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 0
7
- - 574
8
- version: "0.574"
4
+ version: "0.575"
9
5
  platform: ruby
10
6
  authors:
11
7
  - Joshua Harding
@@ -13,57 +9,49 @@ autorequire: dm-xml-adapter
13
9
  bindir: bin
14
10
  cert_chain: []
15
11
 
16
- date: 2010-03-11 00:00:00 -05:00
12
+ date: 2010-03-16 00:00:00 -04:00
17
13
  default_executable:
18
14
  dependencies:
19
15
  - !ruby/object:Gem::Dependency
20
16
  name: libxml-ruby
21
- prerelease: false
22
- requirement: &id001 !ruby/object:Gem::Requirement
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
23
20
  requirements:
24
21
  - - ">="
25
22
  - !ruby/object:Gem::Version
26
- segments:
27
- - 0
28
23
  version: "0"
29
- type: :runtime
30
- version_requirements: *id001
24
+ version:
31
25
  - !ruby/object:Gem::Dependency
32
26
  name: builder
33
- prerelease: false
34
- requirement: &id002 !ruby/object:Gem::Requirement
27
+ type: :runtime
28
+ version_requirement:
29
+ version_requirements: !ruby/object:Gem::Requirement
35
30
  requirements:
36
31
  - - ">="
37
32
  - !ruby/object:Gem::Version
38
- segments:
39
- - 0
40
33
  version: "0"
41
- type: :runtime
42
- version_requirements: *id002
34
+ version:
43
35
  - !ruby/object:Gem::Dependency
44
36
  name: simple_memoize
45
- prerelease: false
46
- requirement: &id003 !ruby/object:Gem::Requirement
37
+ type: :runtime
38
+ version_requirement:
39
+ version_requirements: !ruby/object:Gem::Requirement
47
40
  requirements:
48
41
  - - ">="
49
42
  - !ruby/object:Gem::Version
50
- segments:
51
- - 0
52
43
  version: "0"
53
- type: :runtime
54
- version_requirements: *id003
44
+ version:
55
45
  - !ruby/object:Gem::Dependency
56
46
  name: log4r
57
- prerelease: false
58
- requirement: &id004 !ruby/object:Gem::Requirement
47
+ type: :runtime
48
+ version_requirement:
49
+ version_requirements: !ruby/object:Gem::Requirement
59
50
  requirements:
60
51
  - - ">="
61
52
  - !ruby/object:Gem::Version
62
- segments:
63
- - 0
64
53
  version: "0"
65
- type: :runtime
66
- version_requirements: *id004
54
+ version:
67
55
  description:
68
56
  email: josh@statewidesoftware.com
69
57
  executables: []
@@ -91,20 +79,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
91
79
  requirements:
92
80
  - - ">="
93
81
  - !ruby/object:Gem::Version
94
- segments:
95
- - 0
96
82
  version: "0"
83
+ version:
97
84
  required_rubygems_version: !ruby/object:Gem::Requirement
98
85
  requirements:
99
86
  - - ">="
100
87
  - !ruby/object:Gem::Version
101
- segments:
102
- - 0
103
88
  version: "0"
89
+ version:
104
90
  requirements: []
105
91
 
106
92
  rubyforge_project:
107
- rubygems_version: 1.3.6
93
+ rubygems_version: 1.3.5
108
94
  signing_key:
109
95
  specification_version: 3
110
96
  summary: a XML adapter for DataMapper. this adapter allows you to use DataMapper with XML files as a backing store.