swift-pyrite 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/lib/swift/pyrite/parser.rb +1 -1
- data/lib/swift/pyrite/transformer.rb +23 -8
- data/lib/swift/pyrite/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 774c7aeda0acea26d2d5520472ae5e42fe297c4c
|
4
|
+
data.tar.gz: 99201a8a43fca9e649a5fee48634c7f91fa340e9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 12ff99b918c63369bed43da53b7084237178bfd937c32e4cda48d8789123c216603dc19c8312992fb7e57a8c48e05af7270b54cae247ff1449380668cfaab283
|
7
|
+
data.tar.gz: d787efee670ccfa8316d7dc1b9eb4fb0f388641dbf64150c19628e520866c10bd10b524f9c1b03bbaafd0298b02a2100f997da67377f0841f044fc88875de79e
|
data/.gitignore
CHANGED
data/lib/swift/pyrite/parser.rb
CHANGED
@@ -13,7 +13,7 @@ module Swift
|
|
13
13
|
rule(:ignore_before) { block_comment | comment | (str('protocol').absent? >> any) }
|
14
14
|
|
15
15
|
rule(:generic) { str('<') >> type >> str('>') }
|
16
|
-
rule(:type) { (str('[').maybe >> type_name >> generic.maybe >> str(']').maybe)
|
16
|
+
rule(:type) { (str('[').maybe.as(:bracketed) >> type_name.as(:type_name) >> generic.as(:generic).maybe >> str(']').maybe) }
|
17
17
|
|
18
18
|
rule(:type_name) { identifier >> match('[?!]').maybe }
|
19
19
|
|
@@ -15,6 +15,19 @@ module Swift
|
|
15
15
|
"Fake#{protocol_name}"
|
16
16
|
end
|
17
17
|
|
18
|
+
def unwind_type exp
|
19
|
+
output = []
|
20
|
+
output << exp[:type_name]
|
21
|
+
if exp[:generic]
|
22
|
+
output << "<#{unwind_type(exp[:generic])}>"
|
23
|
+
end
|
24
|
+
if exp[:bracketed]
|
25
|
+
output.unshift('[')
|
26
|
+
output << ']'
|
27
|
+
end
|
28
|
+
output.join
|
29
|
+
end
|
30
|
+
|
18
31
|
def generate
|
19
32
|
output = []
|
20
33
|
output << "class #{struct_name}: #{protocol_name} {"
|
@@ -33,11 +46,11 @@ module Swift
|
|
33
46
|
(@ast[:expressions] || []).map do |exp|
|
34
47
|
next if exp[:type] != 'var'
|
35
48
|
e = exp[:var_decl]
|
36
|
-
name, type = e[:name], e
|
49
|
+
name, type = e[:name], unwind_type(e)
|
37
50
|
output << " self.#{name} = #{name}"
|
38
51
|
vars << "#{name}: #{type}"
|
39
52
|
end
|
40
|
-
if output.size > 0
|
53
|
+
if output.size > 0
|
41
54
|
output.unshift(" init(#{vars.join(', ')}) {")
|
42
55
|
output << " }"
|
43
56
|
end
|
@@ -56,7 +69,7 @@ module Swift
|
|
56
69
|
|
57
70
|
def copy_variable(exp)
|
58
71
|
name = exp[:name]
|
59
|
-
type = exp
|
72
|
+
type = unwind_type(exp)
|
60
73
|
" var #{name}: #{type}"
|
61
74
|
end
|
62
75
|
|
@@ -81,7 +94,9 @@ module Swift
|
|
81
94
|
output = []
|
82
95
|
output << " var #{exp[:name]}CallCount: Int = 0"
|
83
96
|
unless exp[:arguments].nil?
|
84
|
-
types = exp[:arguments].map
|
97
|
+
types = exp[:arguments].map do |a|
|
98
|
+
unwind_type(a)
|
99
|
+
end
|
85
100
|
tupleType = "(" + types.join(", ") + ")"
|
86
101
|
output << " var #{exp[:name]}CalledWith: [#{tupleType}] = [#{tupleType}]()"
|
87
102
|
end
|
@@ -94,12 +109,12 @@ module Swift
|
|
94
109
|
def tuple(exp)
|
95
110
|
results = exp.map do |item|
|
96
111
|
if item[:name]
|
97
|
-
"#{item[:name]}: #{item
|
112
|
+
"#{item[:name]}: #{unwind_type(item)}"
|
98
113
|
else
|
99
|
-
item
|
114
|
+
unwind_type(item)
|
100
115
|
end
|
101
116
|
end
|
102
|
-
if results.count > 1
|
117
|
+
if results.count > 1
|
103
118
|
"(#{results.join(', ')})"
|
104
119
|
else
|
105
120
|
results.join
|
@@ -110,7 +125,7 @@ module Swift
|
|
110
125
|
return if exp.nil?
|
111
126
|
output = []
|
112
127
|
exp.each do |arg|
|
113
|
-
output << "#{arg[:name]}: #{arg
|
128
|
+
output << "#{arg[:name]}: #{unwind_type(arg)}"
|
114
129
|
end
|
115
130
|
output.join(", ")
|
116
131
|
end
|
data/lib/swift/pyrite/version.rb
CHANGED