ruby-xcdm 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -10,3 +10,5 @@ task :test do
10
10
  t.verbose = true
11
11
  end
12
12
  end
13
+
14
+ task :default => :test
@@ -1,3 +1,6 @@
1
+ require 'xcdm/schema'
2
+ require 'xcdm/entity'
3
+
1
4
  if defined?(Motion::Project::Config)
2
5
 
3
6
  namespace :schema do
@@ -13,17 +16,14 @@ if defined?(Motion::Project::Config)
13
16
  desc "Generate the xcdatamodel file"
14
17
  task :build => :clean do
15
18
  Dir.chdir App.config.project_dir
16
- system("xcdm", App.config.name, "schemas", "resources")
19
+ runner = XCDM::Schema::Runner.new( App.config.name, "schemas", "resources")
20
+ App.info "Generating", "Data Model #{App.config.name}"
21
+ runner.load_all { |schema, file| App.info "Loading", file }
22
+ runner.write_all { |schema, file| App.info "Writing", file }
17
23
  end
18
24
  end
19
25
 
20
26
  task :"build:simulator" => :"schema:build"
21
27
  task :"build:device" => :"schema:build"
22
28
 
23
-
24
- else
25
-
26
- require 'xcdm/schema'
27
- require 'xcdm/entity'
28
-
29
29
  end
@@ -24,11 +24,12 @@ module XCDM
24
24
  }
25
25
 
26
26
 
27
- attr_reader :name, :properties, :relationships
27
+ attr_reader :name, :properties, :relationships, :class_name
28
28
 
29
29
 
30
30
  def initialize(name, options = {})
31
31
  @name = name
32
+ @class_name = options[:class_name] || name
32
33
  @properties = []
33
34
  @relationships = []
34
35
  end
@@ -109,7 +110,7 @@ module XCDM
109
110
 
110
111
  def to_xml(builder = nil)
111
112
  builder ||= Builder::XmlMarkup.new(:indent => 2)
112
- builder.entity(name: name, syncable: 'YES') do |xml|
113
+ builder.entity(name: name, syncable: 'YES', representedClassName: class_name ) do |xml|
113
114
  properties.each do |property|
114
115
  xml.attribute(property)
115
116
  end
@@ -13,8 +13,8 @@ module XCDM
13
13
  @entities = []
14
14
  end
15
15
 
16
- def entity(name, &block)
17
- @entities << Entity.new(name).tap { |e| e.instance_eval(&block) }
16
+ def entity(name, options = {}, &block)
17
+ @entities << Entity.new(name, options).tap { |e| e.instance_eval(&block) }
18
18
  end
19
19
 
20
20
  def to_xml(builder = nil)
@@ -78,19 +78,19 @@ module XCDM
78
78
  File.join(dir, 'contents')
79
79
  end
80
80
 
81
- def load_all
81
+ def load_all(&block)
82
82
  Dir["#{@inpath}/*.rb"].each do |file|
83
83
  if File.file?(file)
84
- puts "loading #{file}..."
85
- @loader.load_file(file)
84
+ schema = @loader.load_file(file)
85
+ block.call(schema, file) if block_given?
86
86
  end
87
87
  end
88
88
  end
89
89
 
90
- def write_all
90
+ def write_all(&block)
91
91
  @loader.schemas.each do |schema|
92
92
  filename = datamodel_file(schema.version)
93
- puts "writing #{filename}"
93
+ block.call(schema, filename) if block_given?
94
94
  File.open(filename, "w+") do |f|
95
95
  f.write(schema.to_xml)
96
96
  end
@@ -1,3 +1,3 @@
1
1
  module XCDM
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -98,7 +98,7 @@ module XCDM
98
98
 
99
99
  def test_to_xml
100
100
  expected = REXML::Document.new %{
101
- <entity name="Article" syncable="YES">
101
+ <entity name="Article" representedClassName="Article" syncable="YES">
102
102
  <attribute name="body" optional="NO" attributeType="String" syncable="YES"/>
103
103
  <attribute name="length" optional="YES" attributeType="Integer 32" defaultValueString="0" syncable="YES"/>
104
104
  <attribute name="published" optional="YES" attributeType="Boolean" defaultValueString="NO" syncable="YES"/>
@@ -1,6 +1,6 @@
1
1
  <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
2
2
  <model name="" userDefinedModelVersionIdentifier="0.0.1" type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="2061" systemVersion="12D78" minimumToolsVersion="Xcode 4.3" macOSVersion="Automatic" iOSVersion="Automatic">
3
- <entity name="Article" syncable="YES">
3
+ <entity name="Article" representedClassName="Article" syncable="YES">
4
4
  <attribute name="body" optional="NO" attributeType="String" syncable="YES"/>
5
5
  <attribute name="length" optional="YES" attributeType="Integer 32" defaultValueString="0" syncable="YES"/>
6
6
  <attribute name="published" optional="YES" attributeType="Boolean" defaultValueString="NO" syncable="YES"/>
@@ -8,7 +8,7 @@
8
8
  <attribute name="title" optional="NO" attributeType="String" syncable="YES"/>
9
9
  <relationship name="author" optional="YES" minCount="1" maxCount="1" deletionRule="Nullify" destinationEntity="Author" inverseName="articles" inverseEntity="Author" syncable="YES"/>
10
10
  </entity>
11
- <entity name="Author" syncable="YES">
11
+ <entity name="Author" representedClassName="Author" syncable="YES">
12
12
  <attribute name="fee" optional="YES" attributeType="Float" defaultValueString="0.0" syncable="YES"/>
13
13
  <attribute name="name" optional="NO" attributeType="String" syncable="YES"/>
14
14
  <relationship name="articles" optional="YES" minCount="1" maxCount="-1" deletionRule="Nullify" destinationEntity="Article" inverseName="author" inverseEntity="Article" syncable="YES"/>
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-xcdm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-07-08 00:00:00.000000000 Z
12
+ date: 2013-07-18 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: builder