wara 1.0.1 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.coveralls.yml +1 -0
- data/.gitignore +1 -0
- data/.travis.yml +3 -0
- data/Gemfile +4 -0
- data/README.md +4 -0
- data/Rakefile +3 -0
- data/bin/wara +2 -1
- data/coredata/Model.xcdatamodeld/Model.xcdatamodel/contents +4 -4
- data/{out → coredata/ObjC}/_NotSameWrapper.h +2 -2
- data/{out → coredata/ObjC}/_NotSameWrapper.m +4 -4
- data/coredata/Swift/BloodPressureWrapper.swift +5 -0
- data/coredata/Swift/CurrentPersonWrapper.swift +5 -0
- data/coredata/Swift/HealthDataWrapper.swift +5 -0
- data/coredata/Swift/NotSameWrapper.swift +5 -0
- data/coredata/Swift/PersonWrapper.swift +5 -0
- data/coredata/Swift/_BloodPressureWrapper.swift +19 -0
- data/coredata/Swift/_CurrentPersonWrapper.swift +17 -0
- data/coredata/Swift/_HealthDataWrapper.swift +26 -0
- data/coredata/Swift/_NotSameWrapper.swift +50 -0
- data/coredata/Swift/_PersonWrapper.swift +23 -0
- data/lib/wara/version.rb +1 -1
- data/lib/wara.rb +82 -2
- data/spec/spec_helper.rb +11 -0
- data/spec/wara_spec.rb +55 -31
- metadata +34 -42
- data/coredata/_NotSameWrapper.h +0 -24
- data/coredata/_NotSameWrapper.m +0 -41
- data/out/BloodPressureWrapper.h +0 -5
- data/out/BloodPressureWrapper.m +0 -15
- data/out/CurrentPersonWrapper.h +0 -5
- data/out/CurrentPersonWrapper.m +0 -15
- data/out/HealthDataWrapper.h +0 -5
- data/out/HealthDataWrapper.m +0 -15
- data/out/NotSameWrapper.h +0 -5
- data/out/NotSameWrapper.m +0 -15
- data/out/PersonWrapper.h +0 -5
- data/out/PersonWrapper.m +0 -15
- data/out/_BloodPressureWrapper.h +0 -14
- data/out/_BloodPressureWrapper.m +0 -25
- data/out/_CurrentPersonWrapper.h +0 -13
- data/out/_CurrentPersonWrapper.m +0 -19
- data/out/_HealthDataWrapper.h +0 -16
- data/out/_HealthDataWrapper.m +0 -25
- data/out/_PersonWrapper.h +0 -15
- data/out/_PersonWrapper.m +0 -23
- /data/coredata/{BloodPressureWrapper.h → ObjC/BloodPressureWrapper.h} +0 -0
- /data/coredata/{BloodPressureWrapper.m → ObjC/BloodPressureWrapper.m} +0 -0
- /data/coredata/{CurrentPersonWrapper.h → ObjC/CurrentPersonWrapper.h} +0 -0
- /data/coredata/{CurrentPersonWrapper.m → ObjC/CurrentPersonWrapper.m} +0 -0
- /data/coredata/{HealthDataWrapper.h → ObjC/HealthDataWrapper.h} +0 -0
- /data/coredata/{HealthDataWrapper.m → ObjC/HealthDataWrapper.m} +0 -0
- /data/coredata/{NotSameWrapper.h → ObjC/NotSameWrapper.h} +0 -0
- /data/coredata/{NotSameWrapper.m → ObjC/NotSameWrapper.m} +0 -0
- /data/coredata/{PersonWrapper.h → ObjC/PersonWrapper.h} +0 -0
- /data/coredata/{PersonWrapper.m → ObjC/PersonWrapper.m} +0 -0
- /data/coredata/{_BloodPressureWrapper.h → ObjC/_BloodPressureWrapper.h} +0 -0
- /data/coredata/{_BloodPressureWrapper.m → ObjC/_BloodPressureWrapper.m} +0 -0
- /data/coredata/{_CurrentPersonWrapper.h → ObjC/_CurrentPersonWrapper.h} +0 -0
- /data/coredata/{_CurrentPersonWrapper.m → ObjC/_CurrentPersonWrapper.m} +0 -0
- /data/coredata/{_HealthDataWrapper.h → ObjC/_HealthDataWrapper.h} +0 -0
- /data/coredata/{_HealthDataWrapper.m → ObjC/_HealthDataWrapper.m} +0 -0
- /data/coredata/{_PersonWrapper.h → ObjC/_PersonWrapper.h} +0 -0
- /data/coredata/{_PersonWrapper.m → ObjC/_PersonWrapper.m} +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4774a99b9a89f626eec2f586897780426b599d60
|
4
|
+
data.tar.gz: 7f85f7cf5768377fd354a512c0b9ad3334e41ab3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 83710cc9081a2214c14c0917bed92fa9c68043b9da40839f21e2af433f29e81436428a3accfc6cf64c69b2fb176752ec61425dd05eaa5273ec183e95ba300e46
|
7
|
+
data.tar.gz: d08443138f5b3b8d39683b6954222c33a2622ea33e73d3bed40612e999535a621780d1dbfb6a23236dba146a8bb8e8efcb8e2b324fab51879de9b364a9a2f1b4
|
data/.coveralls.yml
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
service_name: travis-ci
|
data/.gitignore
CHANGED
data/.travis.yml
ADDED
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,5 +1,9 @@
|
|
1
1
|
# Wara
|
2
2
|
|
3
|
+
[![Build Status](https://travis-ci.org/akuraru/Wara.svg?branch=master)](https://travis-ci.org/akuraru/Wara)
|
4
|
+
[![Coverage Status](https://coveralls.io/repos/akuraru/Wara/badge.png?branch=master)](https://coveralls.io/r/akuraru/Wara?branch=master)
|
5
|
+
[![Code Climate](https://codeclimate.com/github/akuraru/Wara/badges/gpa.svg)](https://codeclimate.com/github/akuraru/Wara)
|
6
|
+
|
3
7
|
Wara generate a scapegoat for objects of CoreData.
|
4
8
|
|
5
9
|
You are using CoreDate, if you want to change the Entity, it is necessary to create a sub-context.However, it takes time be used to manage the sub-context.On the other hand, it is necessary to undo to the default context if one context.
|
data/Rakefile
CHANGED
data/bin/wara
CHANGED
@@ -11,9 +11,10 @@ module Wara
|
|
11
11
|
|
12
12
|
option :model, :type => :string, :aliases => '-m',:required => true, :desc => 'Path to model'
|
13
13
|
option :out, :type => :string, :aliases => '-o', :desc => 'Output directory'
|
14
|
+
option :swift, :type => :boolean, :desc => 'Generate Swift'
|
14
15
|
desc "create", "create Translation.strings"
|
15
16
|
def create
|
16
|
-
Wara::Core.new.create(options[:model], options[:out])
|
17
|
+
Wara::Core.new.create(options[:model], options[:out], options[:swift] ? Lang::ObjC : Lang::Swift)
|
17
18
|
puts 'Generate'
|
18
19
|
end
|
19
20
|
desc "version", "version"
|
@@ -1,5 +1,5 @@
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
2
|
-
<model userDefinedModelVersionIdentifier="" type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="
|
2
|
+
<model userDefinedModelVersionIdentifier="" type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="6244" systemVersion="13F34" minimumToolsVersion="Xcode 4.3" macOSVersion="Automatic" iOSVersion="Automatic">
|
3
3
|
<entity name="BloodPressure" representedClassName="BloodPressure" parentEntity="HealthData" syncable="YES">
|
4
4
|
<attribute name="bloodPressure" optional="YES" attributeType="Integer 32" defaultValueString="0" syncable="YES"/>
|
5
5
|
</entity>
|
@@ -18,8 +18,8 @@
|
|
18
18
|
<attribute name="data" optional="YES" attributeType="Binary" syncable="YES"/>
|
19
19
|
<attribute name="date" optional="YES" attributeType="Date" syncable="YES"/>
|
20
20
|
<attribute name="decimal" optional="YES" attributeType="Decimal" defaultValueString="0.0" syncable="YES"/>
|
21
|
-
<attribute name="
|
22
|
-
<attribute name="
|
21
|
+
<attribute name="dou" optional="YES" attributeType="Double" defaultValueString="0.0" syncable="YES"/>
|
22
|
+
<attribute name="flo" optional="YES" attributeType="Float" defaultValueString="0.0" syncable="YES"/>
|
23
23
|
<attribute name="int16" optional="YES" attributeType="Integer 16" defaultValueString="0" syncable="YES"/>
|
24
24
|
<attribute name="int32" optional="YES" attributeType="Integer 32" defaultValueString="0" syncable="YES"/>
|
25
25
|
<attribute name="int64" optional="YES" attributeType="Integer 64" defaultValueString="0" syncable="YES"/>
|
@@ -36,8 +36,8 @@
|
|
36
36
|
<element name="BloodPressure" positionX="-27" positionY="63" width="128" height="60"/>
|
37
37
|
<element name="CurrentPerson" positionX="-63" positionY="-18" width="128" height="60"/>
|
38
38
|
<element name="HealthData" positionX="-36" positionY="9" width="128" height="105"/>
|
39
|
-
<element name="Person" positionX="-54" positionY="-9" width="128" height="105"/>
|
40
39
|
<element name="NotHaveCusttomClassName" positionX="-54" positionY="36" width="128" height="43"/>
|
41
40
|
<element name="NotSameCusstomClassName" positionX="-45" positionY="45" width="128" height="210"/>
|
41
|
+
<element name="Person" positionX="-54" positionY="-9" width="128" height="105"/>
|
42
42
|
</elements>
|
43
43
|
</model>
|
@@ -8,8 +8,8 @@
|
|
8
8
|
@property(nonatomic, strong) NSData *data;
|
9
9
|
@property(nonatomic, strong) NSDate *date;
|
10
10
|
@property(nonatomic, strong) NSDecimalNumber *decimal;
|
11
|
-
@property(nonatomic, strong) NSNumber *
|
12
|
-
@property(nonatomic, strong) NSNumber *
|
11
|
+
@property(nonatomic, strong) NSNumber *dou;
|
12
|
+
@property(nonatomic, strong) NSNumber *flo;
|
13
13
|
@property(nonatomic, strong) NSNumber *int16;
|
14
14
|
@property(nonatomic, strong) NSNumber *int32;
|
15
15
|
@property(nonatomic, strong) NSNumber *int64;
|
@@ -14,8 +14,8 @@
|
|
14
14
|
self.data = entity.data;
|
15
15
|
self.date = entity.date;
|
16
16
|
self.decimal = entity.decimal;
|
17
|
-
self.
|
18
|
-
self.
|
17
|
+
self.dou = entity.dou;
|
18
|
+
self.flo = entity.flo;
|
19
19
|
self.int16 = entity.int16;
|
20
20
|
self.int32 = entity.int32;
|
21
21
|
self.int64 = entity.int64;
|
@@ -30,8 +30,8 @@
|
|
30
30
|
entity.data = self.data;
|
31
31
|
entity.date = self.date;
|
32
32
|
entity.decimal = self.decimal;
|
33
|
-
entity.
|
34
|
-
entity.
|
33
|
+
entity.dou = self.dou;
|
34
|
+
entity.flo = self.flo;
|
35
35
|
entity.int16 = self.int16;
|
36
36
|
entity.int32 = self.int32;
|
37
37
|
entity.int64 = self.int64;
|
@@ -0,0 +1,19 @@
|
|
1
|
+
import Foundation
|
2
|
+
|
3
|
+
class _BloodPressureWrapper: HealthDataWrapper {
|
4
|
+
override func entity() -> BloodPressure? {
|
5
|
+
return _entity as BloodPressure?
|
6
|
+
}
|
7
|
+
var bloodPressure: NSNumber?
|
8
|
+
|
9
|
+
init(bloodPressure: BloodPressure?) {
|
10
|
+
super.init(healthData: bloodPressure)
|
11
|
+
if let e = bloodPressure {
|
12
|
+
self.bloodPressure = e.bloodPressure
|
13
|
+
}
|
14
|
+
}
|
15
|
+
func updateBloodPressure(bloodPressure: BloodPressure) {
|
16
|
+
super.updateHealthData(bloodPressure)
|
17
|
+
bloodPressure.bloodPressure = self.bloodPressure
|
18
|
+
}
|
19
|
+
}
|
@@ -0,0 +1,17 @@
|
|
1
|
+
import Foundation
|
2
|
+
|
3
|
+
class _CurrentPersonWrapper: NSObject {
|
4
|
+
let _entity: CurrentPerson?
|
5
|
+
func entity() -> CurrentPerson? {
|
6
|
+
return _entity
|
7
|
+
}
|
8
|
+
|
9
|
+
init(currentPerson: CurrentPerson?) {
|
10
|
+
_entity = currentPerson
|
11
|
+
super.init()
|
12
|
+
if let e = currentPerson {
|
13
|
+
}
|
14
|
+
}
|
15
|
+
func updateCurrentPerson(currentPerson: CurrentPerson) {
|
16
|
+
}
|
17
|
+
}
|
@@ -0,0 +1,26 @@
|
|
1
|
+
import Foundation
|
2
|
+
|
3
|
+
class _HealthDataWrapper: NSObject {
|
4
|
+
let _entity: HealthData?
|
5
|
+
func entity() -> HealthData? {
|
6
|
+
return _entity
|
7
|
+
}
|
8
|
+
var height: NSNumber?
|
9
|
+
var timeStamp: NSDate?
|
10
|
+
var weight: NSNumber?
|
11
|
+
|
12
|
+
init(healthData: HealthData?) {
|
13
|
+
_entity = healthData
|
14
|
+
super.init()
|
15
|
+
if let e = healthData {
|
16
|
+
self.height = e.height
|
17
|
+
self.timeStamp = e.timeStamp
|
18
|
+
self.weight = e.weight
|
19
|
+
}
|
20
|
+
}
|
21
|
+
func updateHealthData(healthData: HealthData) {
|
22
|
+
healthData.height = self.height
|
23
|
+
healthData.timeStamp = self.timeStamp
|
24
|
+
healthData.weight = self.weight
|
25
|
+
}
|
26
|
+
}
|
@@ -0,0 +1,50 @@
|
|
1
|
+
import Foundation
|
2
|
+
|
3
|
+
class _NotSameWrapper: NSObject {
|
4
|
+
let _entity: NotSame?
|
5
|
+
func entity() -> NotSame? {
|
6
|
+
return _entity
|
7
|
+
}
|
8
|
+
var boolean: NSNumber?
|
9
|
+
var data: NSData?
|
10
|
+
var date: NSDate?
|
11
|
+
var decimal: NSDecimalNumber?
|
12
|
+
var dou: NSNumber?
|
13
|
+
var flo: NSNumber?
|
14
|
+
var int16: NSNumber?
|
15
|
+
var int32: NSNumber?
|
16
|
+
var int64: NSNumber?
|
17
|
+
var string: String?
|
18
|
+
var transformable: AnyObject?
|
19
|
+
|
20
|
+
init(notSame: NotSame?) {
|
21
|
+
_entity = notSame
|
22
|
+
super.init()
|
23
|
+
if let e = notSame {
|
24
|
+
self.boolean = e.boolean
|
25
|
+
self.data = e.data
|
26
|
+
self.date = e.date
|
27
|
+
self.decimal = e.decimal
|
28
|
+
self.dou = e.dou
|
29
|
+
self.flo = e.flo
|
30
|
+
self.int16 = e.int16
|
31
|
+
self.int32 = e.int32
|
32
|
+
self.int64 = e.int64
|
33
|
+
self.string = e.string
|
34
|
+
self.transformable = e.transformable
|
35
|
+
}
|
36
|
+
}
|
37
|
+
func updateNotSame(notSame: NotSame) {
|
38
|
+
notSame.boolean = self.boolean
|
39
|
+
notSame.data = self.data
|
40
|
+
notSame.date = self.date
|
41
|
+
notSame.decimal = self.decimal
|
42
|
+
notSame.dou = self.dou
|
43
|
+
notSame.flo = self.flo
|
44
|
+
notSame.int16 = self.int16
|
45
|
+
notSame.int32 = self.int32
|
46
|
+
notSame.int64 = self.int64
|
47
|
+
notSame.string = self.string
|
48
|
+
notSame.transformable = self.transformable
|
49
|
+
}
|
50
|
+
}
|
@@ -0,0 +1,23 @@
|
|
1
|
+
import Foundation
|
2
|
+
|
3
|
+
class _PersonWrapper: NSObject {
|
4
|
+
let _entity: Person?
|
5
|
+
func entity() -> Person? {
|
6
|
+
return _entity
|
7
|
+
}
|
8
|
+
var birthday: NSDate?
|
9
|
+
var name: String?
|
10
|
+
|
11
|
+
init(person: Person?) {
|
12
|
+
_entity = person
|
13
|
+
super.init()
|
14
|
+
if let e = person {
|
15
|
+
self.birthday = e.birthday
|
16
|
+
self.name = e.name
|
17
|
+
}
|
18
|
+
}
|
19
|
+
func updatePerson(person: Person) {
|
20
|
+
person.birthday = self.birthday
|
21
|
+
person.name = self.name
|
22
|
+
}
|
23
|
+
}
|
data/lib/wara/version.rb
CHANGED
data/lib/wara.rb
CHANGED
@@ -3,9 +3,33 @@ require 'kconv'
|
|
3
3
|
require 'fileutils'
|
4
4
|
require 'rexml/document'
|
5
5
|
|
6
|
+
class String
|
7
|
+
def to_snake
|
8
|
+
ptn = /[A-Z\s]*[^A-Z]*/
|
9
|
+
self.scan(ptn).map{|i|
|
10
|
+
i.gsub(/[\s:]+/,'_').downcase
|
11
|
+
}.join('_').gsub(/__+/,'_').sub(/_$/,'')
|
12
|
+
end
|
13
|
+
def to_camel
|
14
|
+
self.split(/[_\s]+/).map{|i|
|
15
|
+
a,b,c = i.split(/^(.)/)
|
16
|
+
"#{b.upcase}#{c}"
|
17
|
+
}.join('')
|
18
|
+
end
|
19
|
+
def to_scamel
|
20
|
+
s = self.to_camel
|
21
|
+
s[0].downcase + s[1..-1]
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
6
25
|
module Wara
|
26
|
+
module Lang
|
27
|
+
ObjC = 0
|
28
|
+
Swift = 1
|
29
|
+
end
|
30
|
+
|
7
31
|
class Core
|
8
|
-
def create(model, to)
|
32
|
+
def create(model, to, lang = Lang::ObjC)
|
9
33
|
to = File.dirname(model) unless to
|
10
34
|
@xml = REXML::Document.new(open(File.expand_path("contents", model)))
|
11
35
|
@objects = @xml.get_elements('model/entity')
|
@@ -22,8 +46,18 @@ module Wara
|
|
22
46
|
},
|
23
47
|
}
|
24
48
|
}.select{|s| s["representedClassName"]}
|
49
|
+
output(@entities, to, lang)
|
50
|
+
end
|
51
|
+
def output(entities, to, lang)
|
25
52
|
FileUtils.mkdir_p(to) unless FileTest.exist?(to)
|
26
|
-
|
53
|
+
if lang == Lang::ObjC then
|
54
|
+
output_objc(entities, to)
|
55
|
+
else
|
56
|
+
output_swift(entities, to)
|
57
|
+
end
|
58
|
+
end
|
59
|
+
def output_objc(entities, to)
|
60
|
+
entities.map {|e|
|
27
61
|
file_name = e["representedClassName"]
|
28
62
|
hw = header(e)
|
29
63
|
File.write( File.expand_path("_#{file_name}Wrapper.h", to), hw)
|
@@ -35,6 +69,15 @@ module Wara
|
|
35
69
|
File.write( custom_implementation_name, custom_implementation(file_name)) unless FileTest.exist?(custom_implementation_name)
|
36
70
|
}
|
37
71
|
end
|
72
|
+
def output_swift(entities, to)
|
73
|
+
entities.map {|e|
|
74
|
+
file_name = e["representedClassName"]
|
75
|
+
mw = swift(e)
|
76
|
+
File.write( File.expand_path("_#{file_name}Wrapper.swift", to), mw)
|
77
|
+
custom_implementation_name = File.expand_path("#{file_name}Wrapper.swift", to)
|
78
|
+
File.write( custom_implementation_name, custom_swift(file_name)) unless FileTest.exist?(custom_implementation_name)
|
79
|
+
}
|
80
|
+
end
|
38
81
|
def header(e)
|
39
82
|
name = e["representedClassName"]
|
40
83
|
entity = e["parentEntity"]
|
@@ -81,5 +124,42 @@ module Wara
|
|
81
124
|
"Transformable"=>"id ",
|
82
125
|
}[value]
|
83
126
|
end
|
127
|
+
def swift(e)
|
128
|
+
name = e["representedClassName"]
|
129
|
+
entity = e["parentEntity"]
|
130
|
+
init = entity ? "[super initWithEntity:entity]" : "[super init]"
|
131
|
+
parentEntity = entity ? ": #{entity}Wrapper" : ": NSObject"
|
132
|
+
getter = entity ? " override func entity() -> #{name}? {\n return _entity as #{name}?\n" : " let _entity: #{name}?\n func entity() -> #{name}? {\n return _entity\n"
|
133
|
+
init = entity ? " super.init(#{entity.to_scamel}: #{name.to_scamel})\n" : " _entity = #{name.to_scamel}\n super.init()\n"
|
134
|
+
update = entity ? " super.update#{entity}(#{name.to_scamel})\n" : ""
|
135
|
+
"import Foundation\n\nclass _#{name}Wrapper#{parentEntity} {\n#{getter} }\n" +
|
136
|
+
e["attributes"].map {|k, v|
|
137
|
+
" " * 4 + "var #{k}: #{entitySwiftType(v)}\n"
|
138
|
+
}.inject("") {|s, v| s + v} + "\n init(#{name.to_scamel}: #{name}?) {\n#{init} if let e = #{name.to_scamel} {\n" +
|
139
|
+
e["attributes"].map {|k, v|
|
140
|
+
" " * 12 + "self.#{k} = e.#{k}\n"
|
141
|
+
}.inject("") {|s, v| s + v} + " }\n }\n func update#{name}(#{name.to_scamel}: #{name}) {\n#{update}" +
|
142
|
+
e["attributes"].map {|k, v|
|
143
|
+
" " * 8 + "#{name.to_scamel}.#{k} = self.#{k}\n"
|
144
|
+
}.inject("") {|s, v| s + v} + " }\n}\n"
|
145
|
+
end
|
146
|
+
def custom_swift(file_name)
|
147
|
+
"import Foundation\n\nclass #{file_name}Wrapper: _#{file_name}Wrapper {\n // Custom logic goes here.\n}\n"
|
148
|
+
end
|
149
|
+
def entitySwiftType(value)
|
150
|
+
{
|
151
|
+
"Boolean"=>"NSNumber?",
|
152
|
+
"Binary"=>"NSData?",
|
153
|
+
"Date"=>"NSDate?",
|
154
|
+
"Decimal"=>"NSDecimalNumber?",
|
155
|
+
"Double"=>"NSNumber?",
|
156
|
+
"Float"=>"NSNumber?",
|
157
|
+
"Integer 16"=>"NSNumber?",
|
158
|
+
"Integer 32"=>"NSNumber?",
|
159
|
+
"Integer 64"=>"NSNumber?",
|
160
|
+
"String"=>"String?",
|
161
|
+
"Transformable"=>"AnyObject?",
|
162
|
+
}[value]
|
163
|
+
end
|
84
164
|
end
|
85
165
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -14,6 +14,17 @@
|
|
14
14
|
# users commonly want.
|
15
15
|
#
|
16
16
|
# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
|
17
|
+
require 'coveralls'
|
18
|
+
Coveralls.wear!
|
19
|
+
|
20
|
+
|
21
|
+
require 'simplecov'
|
22
|
+
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
|
23
|
+
SimpleCov::Formatter::HTMLFormatter,
|
24
|
+
Coveralls::SimpleCov::Formatter
|
25
|
+
]
|
26
|
+
SimpleCov.start
|
27
|
+
|
17
28
|
RSpec.configure do |config|
|
18
29
|
# The settings below are suggested to provide a good initial experience
|
19
30
|
# with RSpec, but feel free to customize to your heart's content.
|
data/spec/wara_spec.rb
CHANGED
@@ -1,6 +1,13 @@
|
|
1
|
+
require 'spec_helper'
|
1
2
|
require './lib/wara'
|
2
3
|
require 'fileutils'
|
3
4
|
|
5
|
+
describe String do
|
6
|
+
it(:to_snake) { expect("HogeFuga".to_snake).to eq "hoge_fuga"}
|
7
|
+
it(:to_camel) { expect("hoge_fuga".to_camel).to eq "HogeFuga" }
|
8
|
+
it(:to_scamel) { expect("hoge_fuga".to_scamel).to eq "hogeFuga" }
|
9
|
+
end
|
10
|
+
|
4
11
|
module Wara
|
5
12
|
class Core
|
6
13
|
attr_reader :xml, :objects, :entities
|
@@ -8,17 +15,28 @@ module Wara
|
|
8
15
|
end
|
9
16
|
|
10
17
|
describe Wara::Core, "load" do
|
11
|
-
let(:core) {Wara::Core.new() }
|
12
18
|
entity_names = ["BloodPressure", "HealthData", "CurrentPerson", "NotSame", "Person"]
|
13
|
-
|
19
|
+
shared_context 'delete all file' do
|
14
20
|
before do
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
21
|
+
Dir["./out/ObjC/*.*"].each {|f|
|
22
|
+
File.delete(f)
|
23
|
+
}
|
24
|
+
Dir["./out/Swift/*.*"].each {|f|
|
25
|
+
File.delete(f)
|
19
26
|
}
|
20
|
-
core.create("./coredata/Model.xcdatamodeld/Model.xcdatamodel", "./out")
|
21
27
|
end
|
28
|
+
end
|
29
|
+
shared_context 'create' do
|
30
|
+
let(:core) {Wara::Core.new() }
|
31
|
+
before do
|
32
|
+
core.create("./coredata/Model.xcdatamodeld/Model.xcdatamodel", out, lang)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
describe "creaet" do
|
36
|
+
let(:out) { "./out/ObjC" }
|
37
|
+
let(:lang) { Wara::Lang::ObjC }
|
38
|
+
include_context 'delete all file'
|
39
|
+
include_context 'create'
|
22
40
|
describe "xml" do
|
23
41
|
let(:xml) { core.xml }
|
24
42
|
it(:create) {
|
@@ -71,7 +89,7 @@ describe Wara::Core, "load" do
|
|
71
89
|
it(:check_3) {
|
72
90
|
expect(entities[3]).to eq(
|
73
91
|
{
|
74
|
-
"attributes" => {"boolean"=>"Boolean", "data"=>"Binary", "date"=>"Date", "decimal"=>"Decimal", "
|
92
|
+
"attributes" => {"boolean"=>"Boolean", "data"=>"Binary", "date"=>"Date", "decimal"=>"Decimal", "dou"=>"Double", "flo"=>"Float", "int16"=>"Integer 16", "int32"=>"Integer 32", "int64"=>"Integer 64", "string"=>"String", "transformable"=>"Transformable"},
|
75
93
|
"name"=>"NotSameCusstomClassName",
|
76
94
|
"representedClassName"=>"NotSame",
|
77
95
|
"parentEntity"=>nil,
|
@@ -87,33 +105,39 @@ describe Wara::Core, "load" do
|
|
87
105
|
} )
|
88
106
|
}
|
89
107
|
end
|
108
|
+
end
|
109
|
+
describe(:objc) {
|
110
|
+
let(:dir) { "ObjC/" }
|
111
|
+
let(:out) { "./out/#{dir}" }
|
112
|
+
let(:input) { "./coredata/#{dir}" }
|
113
|
+
let(:lang) { Wara::Lang::ObjC }
|
114
|
+
include_context 'delete all file'
|
115
|
+
include_context 'create'
|
90
116
|
entity_names.each {|e|
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
entity_names.each {|e|
|
98
|
-
describe(:read_implementation) {
|
99
|
-
let(:read_implementation) { File.read("out/_#{e}Wrapper.m")}
|
100
|
-
let(:expected) { File.read("coredata/_#{e}Wrapper.m")}
|
101
|
-
it(e) { expect(read_implementation).to eq expected }
|
102
|
-
}
|
103
|
-
}
|
104
|
-
entity_names.each {|e|
|
105
|
-
describe(:read_interface_name) {
|
106
|
-
let(:read_interface_name) { File.read("out/#{e}Wrapper.h")}
|
107
|
-
let(:expected) { File.read("coredata/#{e}Wrapper.h")}
|
108
|
-
it(e) { expect(read_interface_name).to eq expected }
|
117
|
+
["_#{e}Wrapper.h", "_#{e}Wrapper.m", "#{e}Wrapper.h", "#{e}Wrapper.m"].each {|file_name|
|
118
|
+
describe(file_name) {
|
119
|
+
let(:read_interface) { File.read("#{out}#{file_name}")}
|
120
|
+
let(:expected) { File.read("#{input}#{file_name}")}
|
121
|
+
it(e) { expect(read_interface).to eq expected }
|
122
|
+
}
|
109
123
|
}
|
110
124
|
}
|
125
|
+
}
|
126
|
+
describe(:objc) {
|
127
|
+
let(:dir) { "Swift/" }
|
128
|
+
let(:out) { "./out/#{dir}" }
|
129
|
+
let(:input) { "./coredata/#{dir}" }
|
130
|
+
let(:lang) { Wara::Lang::Swift }
|
131
|
+
include_context 'delete all file'
|
132
|
+
include_context 'create'
|
111
133
|
entity_names.each {|e|
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
134
|
+
["_#{e}Wrapper.swift", "#{e}Wrapper.swift"].each {|file_name|
|
135
|
+
describe(file_name) {
|
136
|
+
let(:read_interface) { File.read("#{out}#{file_name}")}
|
137
|
+
let(:expected) { File.read("#{input}#{file_name}")}
|
138
|
+
it(e) { expect(read_interface).to eq expected }
|
139
|
+
}
|
116
140
|
}
|
117
141
|
}
|
118
|
-
|
142
|
+
}
|
119
143
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wara
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- akuraru
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-09-
|
11
|
+
date: 2014-09-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -65,55 +65,47 @@ executables:
|
|
65
65
|
extensions: []
|
66
66
|
extra_rdoc_files: []
|
67
67
|
files:
|
68
|
+
- ".coveralls.yml"
|
68
69
|
- ".gitignore"
|
70
|
+
- ".travis.yml"
|
69
71
|
- Gemfile
|
70
72
|
- LICENSE.txt
|
71
73
|
- README.md
|
72
74
|
- Rakefile
|
73
75
|
- bin/wara
|
74
|
-
- coredata/BloodPressureWrapper.h
|
75
|
-
- coredata/BloodPressureWrapper.m
|
76
|
-
- coredata/CurrentPersonWrapper.h
|
77
|
-
- coredata/CurrentPersonWrapper.m
|
78
|
-
- coredata/HealthDataWrapper.h
|
79
|
-
- coredata/HealthDataWrapper.m
|
80
76
|
- coredata/Model.xcdatamodeld/Model.xcdatamodel/contents
|
81
|
-
- coredata/
|
82
|
-
- coredata/
|
83
|
-
- coredata/
|
84
|
-
- coredata/
|
85
|
-
- coredata/
|
86
|
-
- coredata/
|
87
|
-
- coredata/
|
88
|
-
- coredata/
|
89
|
-
- coredata/
|
90
|
-
- coredata/
|
91
|
-
- coredata/
|
92
|
-
- coredata/
|
93
|
-
- coredata/
|
94
|
-
- coredata/
|
77
|
+
- coredata/ObjC/BloodPressureWrapper.h
|
78
|
+
- coredata/ObjC/BloodPressureWrapper.m
|
79
|
+
- coredata/ObjC/CurrentPersonWrapper.h
|
80
|
+
- coredata/ObjC/CurrentPersonWrapper.m
|
81
|
+
- coredata/ObjC/HealthDataWrapper.h
|
82
|
+
- coredata/ObjC/HealthDataWrapper.m
|
83
|
+
- coredata/ObjC/NotSameWrapper.h
|
84
|
+
- coredata/ObjC/NotSameWrapper.m
|
85
|
+
- coredata/ObjC/PersonWrapper.h
|
86
|
+
- coredata/ObjC/PersonWrapper.m
|
87
|
+
- coredata/ObjC/_BloodPressureWrapper.h
|
88
|
+
- coredata/ObjC/_BloodPressureWrapper.m
|
89
|
+
- coredata/ObjC/_CurrentPersonWrapper.h
|
90
|
+
- coredata/ObjC/_CurrentPersonWrapper.m
|
91
|
+
- coredata/ObjC/_HealthDataWrapper.h
|
92
|
+
- coredata/ObjC/_HealthDataWrapper.m
|
93
|
+
- coredata/ObjC/_NotSameWrapper.h
|
94
|
+
- coredata/ObjC/_NotSameWrapper.m
|
95
|
+
- coredata/ObjC/_PersonWrapper.h
|
96
|
+
- coredata/ObjC/_PersonWrapper.m
|
97
|
+
- coredata/Swift/BloodPressureWrapper.swift
|
98
|
+
- coredata/Swift/CurrentPersonWrapper.swift
|
99
|
+
- coredata/Swift/HealthDataWrapper.swift
|
100
|
+
- coredata/Swift/NotSameWrapper.swift
|
101
|
+
- coredata/Swift/PersonWrapper.swift
|
102
|
+
- coredata/Swift/_BloodPressureWrapper.swift
|
103
|
+
- coredata/Swift/_CurrentPersonWrapper.swift
|
104
|
+
- coredata/Swift/_HealthDataWrapper.swift
|
105
|
+
- coredata/Swift/_NotSameWrapper.swift
|
106
|
+
- coredata/Swift/_PersonWrapper.swift
|
95
107
|
- lib/wara.rb
|
96
108
|
- lib/wara/version.rb
|
97
|
-
- out/BloodPressureWrapper.h
|
98
|
-
- out/BloodPressureWrapper.m
|
99
|
-
- out/CurrentPersonWrapper.h
|
100
|
-
- out/CurrentPersonWrapper.m
|
101
|
-
- out/HealthDataWrapper.h
|
102
|
-
- out/HealthDataWrapper.m
|
103
|
-
- out/NotSameWrapper.h
|
104
|
-
- out/NotSameWrapper.m
|
105
|
-
- out/PersonWrapper.h
|
106
|
-
- out/PersonWrapper.m
|
107
|
-
- out/_BloodPressureWrapper.h
|
108
|
-
- out/_BloodPressureWrapper.m
|
109
|
-
- out/_CurrentPersonWrapper.h
|
110
|
-
- out/_CurrentPersonWrapper.m
|
111
|
-
- out/_HealthDataWrapper.h
|
112
|
-
- out/_HealthDataWrapper.m
|
113
|
-
- out/_NotSameWrapper.h
|
114
|
-
- out/_NotSameWrapper.m
|
115
|
-
- out/_PersonWrapper.h
|
116
|
-
- out/_PersonWrapper.m
|
117
109
|
- spec/spec_helper.rb
|
118
110
|
- spec/wara_spec.rb
|
119
111
|
- wara.gemspec
|
data/coredata/_NotSameWrapper.h
DELETED
@@ -1,24 +0,0 @@
|
|
1
|
-
#import <Foundation/Foundation.h>
|
2
|
-
|
3
|
-
@class NotSame;
|
4
|
-
|
5
|
-
|
6
|
-
@interface _NotSameWrapper : NSObject
|
7
|
-
@property(nonatomic, strong) NSNumber *boolean;
|
8
|
-
@property(nonatomic, strong) NSData *data;
|
9
|
-
@property(nonatomic, strong) NSDate *date;
|
10
|
-
@property(nonatomic, strong) NSDecimalNumber *decimal;
|
11
|
-
@property(nonatomic, strong) NSNumber *double;
|
12
|
-
@property(nonatomic, strong) NSNumber *float;
|
13
|
-
@property(nonatomic, strong) NSNumber *int16;
|
14
|
-
@property(nonatomic, strong) NSNumber *int32;
|
15
|
-
@property(nonatomic, strong) NSNumber *int64;
|
16
|
-
@property(nonatomic, strong) NSString *string;
|
17
|
-
@property(nonatomic, strong) id transformable;
|
18
|
-
|
19
|
-
@property(readonly, strong, nonatomic) NotSame *entity;
|
20
|
-
|
21
|
-
- (instancetype)initWithEntity:(NotSame *)entity;
|
22
|
-
|
23
|
-
- (void)updateEntity:(NotSame *)entity;
|
24
|
-
@end
|
data/coredata/_NotSameWrapper.m
DELETED
@@ -1,41 +0,0 @@
|
|
1
|
-
#import "_NotSameWrapper.h"
|
2
|
-
#import "NotSame.h"
|
3
|
-
|
4
|
-
@interface _NotSameWrapper ()
|
5
|
-
@end
|
6
|
-
|
7
|
-
@implementation _NotSameWrapper {
|
8
|
-
}
|
9
|
-
- (instancetype)initWithEntity:(NotSame *)entity {
|
10
|
-
self = [super init];
|
11
|
-
if (self) {
|
12
|
-
_entity = entity;
|
13
|
-
self.boolean = entity.boolean;
|
14
|
-
self.data = entity.data;
|
15
|
-
self.date = entity.date;
|
16
|
-
self.decimal = entity.decimal;
|
17
|
-
self.double = entity.double;
|
18
|
-
self.float = entity.float;
|
19
|
-
self.int16 = entity.int16;
|
20
|
-
self.int32 = entity.int32;
|
21
|
-
self.int64 = entity.int64;
|
22
|
-
self.string = entity.string;
|
23
|
-
self.transformable = entity.transformable;
|
24
|
-
}
|
25
|
-
return self;
|
26
|
-
}
|
27
|
-
|
28
|
-
- (void)updateEntity:(NotSame *)entity {
|
29
|
-
entity.boolean = self.boolean;
|
30
|
-
entity.data = self.data;
|
31
|
-
entity.date = self.date;
|
32
|
-
entity.decimal = self.decimal;
|
33
|
-
entity.double = self.double;
|
34
|
-
entity.float = self.float;
|
35
|
-
entity.int16 = self.int16;
|
36
|
-
entity.int32 = self.int32;
|
37
|
-
entity.int64 = self.int64;
|
38
|
-
entity.string = self.string;
|
39
|
-
entity.transformable = self.transformable;
|
40
|
-
}
|
41
|
-
@end
|
data/out/BloodPressureWrapper.h
DELETED
data/out/BloodPressureWrapper.m
DELETED
data/out/CurrentPersonWrapper.h
DELETED
data/out/CurrentPersonWrapper.m
DELETED
data/out/HealthDataWrapper.h
DELETED
data/out/HealthDataWrapper.m
DELETED
data/out/NotSameWrapper.h
DELETED
data/out/NotSameWrapper.m
DELETED
data/out/PersonWrapper.h
DELETED
data/out/PersonWrapper.m
DELETED
data/out/_BloodPressureWrapper.h
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
#import "HealthDataWrapper.h"
|
2
|
-
|
3
|
-
@class BloodPressure;
|
4
|
-
|
5
|
-
|
6
|
-
@interface _BloodPressureWrapper : HealthDataWrapper
|
7
|
-
@property(nonatomic, strong) NSNumber *bloodPressure;
|
8
|
-
|
9
|
-
- (BloodPressure *)entity;
|
10
|
-
|
11
|
-
- (instancetype)initWithEntity:(BloodPressure *)entity;
|
12
|
-
|
13
|
-
- (void)updateEntity:(BloodPressure *)entity;
|
14
|
-
@end
|
data/out/_BloodPressureWrapper.m
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
#import "_BloodPressureWrapper.h"
|
2
|
-
#import "BloodPressure.h"
|
3
|
-
|
4
|
-
@interface _BloodPressureWrapper ()
|
5
|
-
@end
|
6
|
-
|
7
|
-
@implementation _BloodPressureWrapper {
|
8
|
-
}
|
9
|
-
- (BloodPressure *)entity {
|
10
|
-
return (BloodPressure *) [super entity];
|
11
|
-
}
|
12
|
-
|
13
|
-
- (instancetype)initWithEntity:(BloodPressure *)entity {
|
14
|
-
self = [super initWithEntity:entity];
|
15
|
-
if (self) {
|
16
|
-
self.bloodPressure = entity.bloodPressure;
|
17
|
-
}
|
18
|
-
return self;
|
19
|
-
}
|
20
|
-
|
21
|
-
- (void)updateEntity:(BloodPressure *)entity {
|
22
|
-
[super updateEntity:entity];
|
23
|
-
entity.bloodPressure = self.bloodPressure;
|
24
|
-
}
|
25
|
-
@end
|
data/out/_CurrentPersonWrapper.h
DELETED
@@ -1,13 +0,0 @@
|
|
1
|
-
#import <Foundation/Foundation.h>
|
2
|
-
|
3
|
-
@class CurrentPerson;
|
4
|
-
|
5
|
-
|
6
|
-
@interface _CurrentPersonWrapper : NSObject
|
7
|
-
|
8
|
-
@property(readonly, strong, nonatomic) CurrentPerson *entity;
|
9
|
-
|
10
|
-
- (instancetype)initWithEntity:(CurrentPerson *)entity;
|
11
|
-
|
12
|
-
- (void)updateEntity:(CurrentPerson *)entity;
|
13
|
-
@end
|
data/out/_CurrentPersonWrapper.m
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
#import "_CurrentPersonWrapper.h"
|
2
|
-
#import "CurrentPerson.h"
|
3
|
-
|
4
|
-
@interface _CurrentPersonWrapper ()
|
5
|
-
@end
|
6
|
-
|
7
|
-
@implementation _CurrentPersonWrapper {
|
8
|
-
}
|
9
|
-
- (instancetype)initWithEntity:(CurrentPerson *)entity {
|
10
|
-
self = [super init];
|
11
|
-
if (self) {
|
12
|
-
_entity = entity;
|
13
|
-
}
|
14
|
-
return self;
|
15
|
-
}
|
16
|
-
|
17
|
-
- (void)updateEntity:(CurrentPerson *)entity {
|
18
|
-
}
|
19
|
-
@end
|
data/out/_HealthDataWrapper.h
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
#import <Foundation/Foundation.h>
|
2
|
-
|
3
|
-
@class HealthData;
|
4
|
-
|
5
|
-
|
6
|
-
@interface _HealthDataWrapper : NSObject
|
7
|
-
@property(nonatomic, strong) NSNumber *height;
|
8
|
-
@property(nonatomic, strong) NSDate *timeStamp;
|
9
|
-
@property(nonatomic, strong) NSNumber *weight;
|
10
|
-
|
11
|
-
@property(readonly, strong, nonatomic) HealthData *entity;
|
12
|
-
|
13
|
-
- (instancetype)initWithEntity:(HealthData *)entity;
|
14
|
-
|
15
|
-
- (void)updateEntity:(HealthData *)entity;
|
16
|
-
@end
|
data/out/_HealthDataWrapper.m
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
#import "_HealthDataWrapper.h"
|
2
|
-
#import "HealthData.h"
|
3
|
-
|
4
|
-
@interface _HealthDataWrapper ()
|
5
|
-
@end
|
6
|
-
|
7
|
-
@implementation _HealthDataWrapper {
|
8
|
-
}
|
9
|
-
- (instancetype)initWithEntity:(HealthData *)entity {
|
10
|
-
self = [super init];
|
11
|
-
if (self) {
|
12
|
-
_entity = entity;
|
13
|
-
self.height = entity.height;
|
14
|
-
self.timeStamp = entity.timeStamp;
|
15
|
-
self.weight = entity.weight;
|
16
|
-
}
|
17
|
-
return self;
|
18
|
-
}
|
19
|
-
|
20
|
-
- (void)updateEntity:(HealthData *)entity {
|
21
|
-
entity.height = self.height;
|
22
|
-
entity.timeStamp = self.timeStamp;
|
23
|
-
entity.weight = self.weight;
|
24
|
-
}
|
25
|
-
@end
|
data/out/_PersonWrapper.h
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
#import <Foundation/Foundation.h>
|
2
|
-
|
3
|
-
@class Person;
|
4
|
-
|
5
|
-
|
6
|
-
@interface _PersonWrapper : NSObject
|
7
|
-
@property(nonatomic, strong) NSDate *birthday;
|
8
|
-
@property(nonatomic, strong) NSString *name;
|
9
|
-
|
10
|
-
@property(readonly, strong, nonatomic) Person *entity;
|
11
|
-
|
12
|
-
- (instancetype)initWithEntity:(Person *)entity;
|
13
|
-
|
14
|
-
- (void)updateEntity:(Person *)entity;
|
15
|
-
@end
|
data/out/_PersonWrapper.m
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
#import "_PersonWrapper.h"
|
2
|
-
#import "Person.h"
|
3
|
-
|
4
|
-
@interface _PersonWrapper ()
|
5
|
-
@end
|
6
|
-
|
7
|
-
@implementation _PersonWrapper {
|
8
|
-
}
|
9
|
-
- (instancetype)initWithEntity:(Person *)entity {
|
10
|
-
self = [super init];
|
11
|
-
if (self) {
|
12
|
-
_entity = entity;
|
13
|
-
self.birthday = entity.birthday;
|
14
|
-
self.name = entity.name;
|
15
|
-
}
|
16
|
-
return self;
|
17
|
-
}
|
18
|
-
|
19
|
-
- (void)updateEntity:(Person *)entity {
|
20
|
-
entity.birthday = self.birthday;
|
21
|
-
entity.name = self.name;
|
22
|
-
}
|
23
|
-
@end
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|