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 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