swift-pyrite 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 36f9b0fd8023d203e9d57df4a7cd0d847853d76b
4
- data.tar.gz: ebf4387326c7564ac2621a8fbfd431aa44b6927d
3
+ metadata.gz: 774c7aeda0acea26d2d5520472ae5e42fe297c4c
4
+ data.tar.gz: 99201a8a43fca9e649a5fee48634c7f91fa340e9
5
5
  SHA512:
6
- metadata.gz: e41bf40867fff24be1886a7bd01a0fb6b80fb5dd209b78ec90dbf18bf60118e3e181803e74175fc400d4fc82f73dff735ed7a856f3979cc9a59026ddeb8f45da
7
- data.tar.gz: c87d24d7530e09b110f9818e848739f3dedac1da2ad2bf0b1372f92a72ed6859160f5916d9632985669257a3ac999a76c36f1350c12d59aa98dba9aa1c2934d2
6
+ metadata.gz: 12ff99b918c63369bed43da53b7084237178bfd937c32e4cda48d8789123c216603dc19c8312992fb7e57a8c48e05af7270b54cae247ff1449380668cfaab283
7
+ data.tar.gz: d787efee670ccfa8316d7dc1b9eb4fb0f388641dbf64150c19628e520866c10bd10b524f9c1b03bbaafd0298b02a2100f997da67377f0841f044fc88875de79e
data/.gitignore CHANGED
@@ -9,3 +9,4 @@
9
9
  /tmp/
10
10
  out
11
11
  *.gem
12
+ spec/actual_fakes/*
@@ -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).as(:type) }
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[:type]
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[:type]
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 {|a| a[:type] }
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[:type]}"
112
+ "#{item[:name]}: #{unwind_type(item)}"
98
113
  else
99
- item[:type]
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[:type]}"
128
+ output << "#{arg[:name]}: #{unwind_type(arg)}"
114
129
  end
115
130
  output.join(", ")
116
131
  end
@@ -1,5 +1,5 @@
1
1
  module Swift
2
2
  module Pyrite
3
- VERSION = "0.1.0"
3
+ VERSION = "0.1.1"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: swift-pyrite
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Genevieve L'Esperance