rubysketch-solitaire 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (55) hide show
  1. checksums.yaml +7 -0
  2. data/.bundle/config +2 -0
  3. data/.github/workflows/release-gem.yml +62 -0
  4. data/.github/workflows/test.yml +23 -0
  5. data/.github/workflows/utils.rb +56 -0
  6. data/.gitignore +11 -0
  7. data/Gemfile +5 -0
  8. data/Gemfile.lock +284 -0
  9. data/LICENSE +21 -0
  10. data/Podfile +31 -0
  11. data/Podfile.lock +59 -0
  12. data/README.md +21 -0
  13. data/Rakefile +100 -0
  14. data/RubySolitaire/Assets.xcassets/AccentColor.colorset/Contents.json +11 -0
  15. data/RubySolitaire/Assets.xcassets/AppIcon.appiconset/Contents.json +98 -0
  16. data/RubySolitaire/Assets.xcassets/Contents.json +6 -0
  17. data/RubySolitaire/BridgingHeader.h +10 -0
  18. data/RubySolitaire/GameView.swift +47 -0
  19. data/RubySolitaire/Preview Content/Preview Assets.xcassets/Contents.json +6 -0
  20. data/RubySolitaire/RubySolitaireApp.swift +10 -0
  21. data/RubySolitaireTests/RubySolitaireTests.swift +28 -0
  22. data/RubySolitaireUITests/RubySolitaireUITests.swift +35 -0
  23. data/RubySolitaireUITests/RubySolitaireUITestsLaunchTests.swift +25 -0
  24. data/VERSION +1 -0
  25. data/data/button.mp3 +0 -0
  26. data/data/card.png +0 -0
  27. data/data/deal1.mp3 +0 -0
  28. data/data/deal2.mp3 +0 -0
  29. data/data/deal3.mp3 +0 -0
  30. data/data/flip.mp3 +0 -0
  31. data/data/noop.mp3 +0 -0
  32. data/lib/rubysketch/solitaire/background.rb +34 -0
  33. data/lib/rubysketch/solitaire/card.rb +256 -0
  34. data/lib/rubysketch/solitaire/common/animation.rb +116 -0
  35. data/lib/rubysketch/solitaire/common/button.rb +67 -0
  36. data/lib/rubysketch/solitaire/common/dialog.rb +103 -0
  37. data/lib/rubysketch/solitaire/common/history.rb +94 -0
  38. data/lib/rubysketch/solitaire/common/particle.rb +71 -0
  39. data/lib/rubysketch/solitaire/common/scene.rb +128 -0
  40. data/lib/rubysketch/solitaire/common/score.rb +37 -0
  41. data/lib/rubysketch/solitaire/common/settings.rb +31 -0
  42. data/lib/rubysketch/solitaire/common/shake.rb +48 -0
  43. data/lib/rubysketch/solitaire/common/sound.rb +6 -0
  44. data/lib/rubysketch/solitaire/common/timer.rb +35 -0
  45. data/lib/rubysketch/solitaire/common/transitions.rb +149 -0
  46. data/lib/rubysketch/solitaire/common/utils.rb +89 -0
  47. data/lib/rubysketch/solitaire/extension.rb +25 -0
  48. data/lib/rubysketch/solitaire/klondike.rb +676 -0
  49. data/lib/rubysketch/solitaire/places.rb +177 -0
  50. data/lib/rubysketch/solitaire/start.rb +19 -0
  51. data/lib/rubysketch/solitaire.rb +80 -0
  52. data/main.rb +1 -0
  53. data/project.yml +91 -0
  54. data/solitaire.gemspec +28 -0
  55. metadata +137 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 81277cc0d2fd26e1236aead267584a337b431602a1f5447a9576e391864c6d72
4
+ data.tar.gz: 50ffd854120be92e95ae9508edacc2fc9ab0e9eab5df23012bceea281dc54616
5
+ SHA512:
6
+ metadata.gz: 704feade59169093f22fba8e0bd20b3eb950ac95b5b656bd71a0f6ddba9271f011fcbda38771d32b3d015043a3bf26976c3863cb3979011e97a6f8414b42c3ad
7
+ data.tar.gz: 5cd925393288fabfaab9837cb418a288793d07d09d9e315abf95af14875779bae70d9b121f0c04600a180fddb0775d9f0f874e2dee30ea851b59d48e1f62d1c3
data/.bundle/config ADDED
@@ -0,0 +1,2 @@
1
+ ---
2
+ BUNDLE_SET: "path vendor/bundle"
@@ -0,0 +1,62 @@
1
+ name: Release Gem
2
+
3
+ on:
4
+ push:
5
+ tags: ['v[0-9]*']
6
+
7
+ jobs:
8
+ release:
9
+ runs-on: macos-latest
10
+
11
+ steps:
12
+ - name: ruby 3.2
13
+ uses: ruby/setup-ruby@v1
14
+ with:
15
+ ruby-version: 3.2
16
+
17
+ - name: checkout
18
+ uses: actions/checkout@v2
19
+
20
+ - name: setup dependencies
21
+ run: "ruby -I.github/workflows -rutils -e 'setup_dependencies'"
22
+
23
+ #- name: install gems
24
+ # run: gem install yard
25
+
26
+ #- name: test
27
+ # run: rake quiet test
28
+
29
+ - name: create gem
30
+ id: gem
31
+ run: |
32
+ rake gem
33
+ echo path=$(ruby -e 'print Dir.glob("*.gem").first') >> $GITHUB_OUTPUT
34
+
35
+ - name: create github release
36
+ id: release
37
+ uses: actions/create-release@v1
38
+ env:
39
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
40
+ with:
41
+ tag_name: ${{ github.ref }}
42
+ release_name: ${{ github.ref }}
43
+
44
+ - name: upload to github release
45
+ uses: actions/upload-release-asset@v1
46
+ env:
47
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
48
+ with:
49
+ upload_url: ${{ steps.release.outputs.upload_url }}
50
+ asset_path: ./${{ steps.gem.outputs.path }}
51
+ asset_name: ${{ steps.gem.outputs.path }}
52
+ asset_content_type: application/zip
53
+
54
+ - name: upload to rubygems
55
+ env:
56
+ GEM_HOST_API_KEY: ${{ secrets.RUBYGEMS_AUTH_TOKEN }}
57
+ run: |
58
+ mkdir -p $HOME/.gem
59
+ touch $HOME/.gem/credentials
60
+ chmod 0600 $HOME/.gem/credentials
61
+ printf -- "---\n:rubygems_api_key: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
62
+ rake upload
@@ -0,0 +1,23 @@
1
+ name: Test
2
+
3
+ on:
4
+ push:
5
+ branches: [master]
6
+ pull_request:
7
+ branches: [master]
8
+
9
+ jobs:
10
+ test:
11
+ runs-on: macos-latest
12
+
13
+ steps:
14
+ - name: ruby 3.2
15
+ uses: ruby/setup-ruby@v1
16
+ with:
17
+ ruby-version: 3.2
18
+
19
+ - name: checkout
20
+ uses: actions/checkout@v2
21
+
22
+ - name: build
23
+ run: rake build
@@ -0,0 +1,56 @@
1
+ RENAMES = {reflex: 'reflexion'}
2
+
3
+ def sh(cmd)
4
+ puts cmd
5
+ system cmd
6
+ end
7
+
8
+ def setup_dependencies(build: true, only: nil)
9
+ gemspec_path = `git ls-files`.lines(chomp: true).find {|l| l =~ /\.gemspec$/}
10
+ return unless gemspec_path
11
+
12
+ gemspec = File.read gemspec_path
13
+ name = File.basename gemspec_path, '.gemspec'
14
+
15
+ exts = File.readlines('Rakefile')
16
+ .map {|l| l[%r|^\s*require\W+(\w+)/extension\W+$|, 1]}
17
+ .compact
18
+ .reject {|ext| ext == name}
19
+ exts = exts & [only].flatten.map(&:to_s) if only
20
+
21
+ exts.each do |ext|
22
+ gem = RENAMES[ext.to_sym].then {|s| s || ext}
23
+ ver = gemspec[/add_runtime_dependency.*['"]#{gem}['"].*['"]\s*~>\s*([\d\.]+)\s*['"]/, 1]
24
+ opts = '-c advice.detachedHead=false --depth 1'
25
+ clone = "git clone #{opts} https://github.com/xord/#{ext}.git ../#{ext}"
26
+
27
+ # 'rake subtree:push' pushes all subrepos, so cloning by new tag
28
+ # often fails before tagging each new tag
29
+ sh %( #{clone} --branch v#{ver} || #{clone} )
30
+ sh %( cd ../#{ext} && rake ext )
31
+ end
32
+ end
33
+
34
+ def tag_versions()
35
+ tags = `git tag`.lines chomp: true
36
+ vers = `git log --oneline ./VERSION`
37
+ .lines(chomp: true)
38
+ .map {|line| line.split.first[/^\w+$/]}
39
+ .map {|hash| [`git cat-file -p #{hash}:./VERSION 2>/dev/null`[/[\d\.]+/], hash]}
40
+ .select {|ver, hash| ver && hash}
41
+ .reverse
42
+ .to_h
43
+
44
+ changes = File.read('ChangeLog.md')
45
+ .split(/^\s*##\s*\[\s*v([\d\.]+)\s*\].*$/)
46
+ .slice(1..-1)
47
+ .each_slice(2)
48
+ .to_h
49
+ .transform_values(&:strip!)
50
+
51
+ vers.to_a.reverse.each do |ver, hash|
52
+ tag = "v#{ver}"
53
+ break if tags.include?(tag)
54
+ sh %( git tag -a -m \"#{changes[ver]&.gsub '"', '\\"'}\" #{tag} #{hash} )
55
+ end
56
+ end
data/.gitignore ADDED
@@ -0,0 +1,11 @@
1
+ *.xcworkspace
2
+ *.xcodeproj
3
+ */Info.plist
4
+ *~
5
+
6
+ rubysketch-solitaire-*.gem
7
+ solitaire.json
8
+
9
+ vendor/bundle/
10
+ Pods/
11
+ .DS_Store
data/Gemfile ADDED
@@ -0,0 +1,5 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'rake'
4
+ gem 'cocoapods'
5
+ gem 'fastlane'
data/Gemfile.lock ADDED
@@ -0,0 +1,284 @@
1
+ GEM
2
+ remote: https://rubygems.org/
3
+ specs:
4
+ CFPropertyList (3.0.6)
5
+ rexml
6
+ activesupport (7.0.5)
7
+ concurrent-ruby (~> 1.0, >= 1.0.2)
8
+ i18n (>= 1.6, < 2)
9
+ minitest (>= 5.1)
10
+ tzinfo (~> 2.0)
11
+ addressable (2.8.4)
12
+ public_suffix (>= 2.0.2, < 6.0)
13
+ algoliasearch (1.27.5)
14
+ httpclient (~> 2.8, >= 2.8.3)
15
+ json (>= 1.5.1)
16
+ artifactory (3.0.15)
17
+ atomos (0.1.3)
18
+ aws-eventstream (1.2.0)
19
+ aws-partitions (1.771.0)
20
+ aws-sdk-core (3.173.1)
21
+ aws-eventstream (~> 1, >= 1.0.2)
22
+ aws-partitions (~> 1, >= 1.651.0)
23
+ aws-sigv4 (~> 1.5)
24
+ jmespath (~> 1, >= 1.6.1)
25
+ aws-sdk-kms (1.64.0)
26
+ aws-sdk-core (~> 3, >= 3.165.0)
27
+ aws-sigv4 (~> 1.1)
28
+ aws-sdk-s3 (1.122.0)
29
+ aws-sdk-core (~> 3, >= 3.165.0)
30
+ aws-sdk-kms (~> 1)
31
+ aws-sigv4 (~> 1.4)
32
+ aws-sigv4 (1.5.2)
33
+ aws-eventstream (~> 1, >= 1.0.2)
34
+ babosa (1.0.4)
35
+ claide (1.1.0)
36
+ cocoapods (1.12.1)
37
+ addressable (~> 2.8)
38
+ claide (>= 1.0.2, < 2.0)
39
+ cocoapods-core (= 1.12.1)
40
+ cocoapods-deintegrate (>= 1.0.3, < 2.0)
41
+ cocoapods-downloader (>= 1.6.0, < 2.0)
42
+ cocoapods-plugins (>= 1.0.0, < 2.0)
43
+ cocoapods-search (>= 1.0.0, < 2.0)
44
+ cocoapods-trunk (>= 1.6.0, < 2.0)
45
+ cocoapods-try (>= 1.1.0, < 2.0)
46
+ colored2 (~> 3.1)
47
+ escape (~> 0.0.4)
48
+ fourflusher (>= 2.3.0, < 3.0)
49
+ gh_inspector (~> 1.0)
50
+ molinillo (~> 0.8.0)
51
+ nap (~> 1.0)
52
+ ruby-macho (>= 2.3.0, < 3.0)
53
+ xcodeproj (>= 1.21.0, < 2.0)
54
+ cocoapods-core (1.12.1)
55
+ activesupport (>= 5.0, < 8)
56
+ addressable (~> 2.8)
57
+ algoliasearch (~> 1.0)
58
+ concurrent-ruby (~> 1.1)
59
+ fuzzy_match (~> 2.0.4)
60
+ nap (~> 1.0)
61
+ netrc (~> 0.11)
62
+ public_suffix (~> 4.0)
63
+ typhoeus (~> 1.0)
64
+ cocoapods-deintegrate (1.0.5)
65
+ cocoapods-downloader (1.6.3)
66
+ cocoapods-plugins (1.0.0)
67
+ nap
68
+ cocoapods-search (1.0.1)
69
+ cocoapods-trunk (1.6.0)
70
+ nap (>= 0.8, < 2.0)
71
+ netrc (~> 0.11)
72
+ cocoapods-try (1.2.0)
73
+ colored (1.2)
74
+ colored2 (3.1.2)
75
+ commander (4.6.0)
76
+ highline (~> 2.0.0)
77
+ concurrent-ruby (1.2.2)
78
+ declarative (0.0.20)
79
+ digest-crc (0.6.4)
80
+ rake (>= 12.0.0, < 14.0.0)
81
+ domain_name (0.5.20190701)
82
+ unf (>= 0.0.5, < 1.0.0)
83
+ dotenv (2.8.1)
84
+ emoji_regex (3.2.3)
85
+ escape (0.0.4)
86
+ ethon (0.16.0)
87
+ ffi (>= 1.15.0)
88
+ excon (0.99.0)
89
+ faraday (1.10.3)
90
+ faraday-em_http (~> 1.0)
91
+ faraday-em_synchrony (~> 1.0)
92
+ faraday-excon (~> 1.1)
93
+ faraday-httpclient (~> 1.0)
94
+ faraday-multipart (~> 1.0)
95
+ faraday-net_http (~> 1.0)
96
+ faraday-net_http_persistent (~> 1.0)
97
+ faraday-patron (~> 1.0)
98
+ faraday-rack (~> 1.0)
99
+ faraday-retry (~> 1.0)
100
+ ruby2_keywords (>= 0.0.4)
101
+ faraday-cookie_jar (0.0.7)
102
+ faraday (>= 0.8.0)
103
+ http-cookie (~> 1.0.0)
104
+ faraday-em_http (1.0.0)
105
+ faraday-em_synchrony (1.0.0)
106
+ faraday-excon (1.1.0)
107
+ faraday-httpclient (1.0.1)
108
+ faraday-multipart (1.0.4)
109
+ multipart-post (~> 2)
110
+ faraday-net_http (1.0.1)
111
+ faraday-net_http_persistent (1.2.0)
112
+ faraday-patron (1.0.0)
113
+ faraday-rack (1.0.0)
114
+ faraday-retry (1.0.3)
115
+ faraday_middleware (1.2.0)
116
+ faraday (~> 1.0)
117
+ fastimage (2.2.7)
118
+ fastlane (2.213.0)
119
+ CFPropertyList (>= 2.3, < 4.0.0)
120
+ addressable (>= 2.8, < 3.0.0)
121
+ artifactory (~> 3.0)
122
+ aws-sdk-s3 (~> 1.0)
123
+ babosa (>= 1.0.3, < 2.0.0)
124
+ bundler (>= 1.12.0, < 3.0.0)
125
+ colored
126
+ commander (~> 4.6)
127
+ dotenv (>= 2.1.1, < 3.0.0)
128
+ emoji_regex (>= 0.1, < 4.0)
129
+ excon (>= 0.71.0, < 1.0.0)
130
+ faraday (~> 1.0)
131
+ faraday-cookie_jar (~> 0.0.6)
132
+ faraday_middleware (~> 1.0)
133
+ fastimage (>= 2.1.0, < 3.0.0)
134
+ gh_inspector (>= 1.1.2, < 2.0.0)
135
+ google-apis-androidpublisher_v3 (~> 0.3)
136
+ google-apis-playcustomapp_v1 (~> 0.1)
137
+ google-cloud-storage (~> 1.31)
138
+ highline (~> 2.0)
139
+ json (< 3.0.0)
140
+ jwt (>= 2.1.0, < 3)
141
+ mini_magick (>= 4.9.4, < 5.0.0)
142
+ multipart-post (>= 2.0.0, < 3.0.0)
143
+ naturally (~> 2.2)
144
+ optparse (~> 0.1.1)
145
+ plist (>= 3.1.0, < 4.0.0)
146
+ rubyzip (>= 2.0.0, < 3.0.0)
147
+ security (= 0.1.3)
148
+ simctl (~> 1.6.3)
149
+ terminal-notifier (>= 2.0.0, < 3.0.0)
150
+ terminal-table (>= 1.4.5, < 2.0.0)
151
+ tty-screen (>= 0.6.3, < 1.0.0)
152
+ tty-spinner (>= 0.8.0, < 1.0.0)
153
+ word_wrap (~> 1.0.0)
154
+ xcodeproj (>= 1.13.0, < 2.0.0)
155
+ xcpretty (~> 0.3.0)
156
+ xcpretty-travis-formatter (>= 0.0.3)
157
+ ffi (1.15.5)
158
+ fourflusher (2.3.1)
159
+ fuzzy_match (2.0.4)
160
+ gh_inspector (1.1.3)
161
+ google-apis-androidpublisher_v3 (0.42.0)
162
+ google-apis-core (>= 0.11.0, < 2.a)
163
+ google-apis-core (0.11.0)
164
+ addressable (~> 2.5, >= 2.5.1)
165
+ googleauth (>= 0.16.2, < 2.a)
166
+ httpclient (>= 2.8.1, < 3.a)
167
+ mini_mime (~> 1.0)
168
+ representable (~> 3.0)
169
+ retriable (>= 2.0, < 4.a)
170
+ rexml
171
+ webrick
172
+ google-apis-iamcredentials_v1 (0.17.0)
173
+ google-apis-core (>= 0.11.0, < 2.a)
174
+ google-apis-playcustomapp_v1 (0.13.0)
175
+ google-apis-core (>= 0.11.0, < 2.a)
176
+ google-apis-storage_v1 (0.19.0)
177
+ google-apis-core (>= 0.9.0, < 2.a)
178
+ google-cloud-core (1.6.0)
179
+ google-cloud-env (~> 1.0)
180
+ google-cloud-errors (~> 1.0)
181
+ google-cloud-env (1.6.0)
182
+ faraday (>= 0.17.3, < 3.0)
183
+ google-cloud-errors (1.3.1)
184
+ google-cloud-storage (1.44.0)
185
+ addressable (~> 2.8)
186
+ digest-crc (~> 0.4)
187
+ google-apis-iamcredentials_v1 (~> 0.1)
188
+ google-apis-storage_v1 (~> 0.19.0)
189
+ google-cloud-core (~> 1.6)
190
+ googleauth (>= 0.16.2, < 2.a)
191
+ mini_mime (~> 1.0)
192
+ googleauth (1.5.2)
193
+ faraday (>= 0.17.3, < 3.a)
194
+ jwt (>= 1.4, < 3.0)
195
+ memoist (~> 0.16)
196
+ multi_json (~> 1.11)
197
+ os (>= 0.9, < 2.0)
198
+ signet (>= 0.16, < 2.a)
199
+ highline (2.0.3)
200
+ http-cookie (1.0.5)
201
+ domain_name (~> 0.5)
202
+ httpclient (2.8.3)
203
+ i18n (1.13.0)
204
+ concurrent-ruby (~> 1.0)
205
+ jmespath (1.6.2)
206
+ json (2.6.3)
207
+ jwt (2.7.0)
208
+ memoist (0.16.2)
209
+ mini_magick (4.12.0)
210
+ mini_mime (1.1.2)
211
+ minitest (5.18.0)
212
+ molinillo (0.8.0)
213
+ multi_json (1.15.0)
214
+ multipart-post (2.3.0)
215
+ nanaimo (0.3.0)
216
+ nap (1.1.0)
217
+ naturally (2.2.1)
218
+ netrc (0.11.0)
219
+ optparse (0.1.1)
220
+ os (1.1.4)
221
+ plist (3.7.0)
222
+ public_suffix (4.0.7)
223
+ rake (13.0.6)
224
+ representable (3.2.0)
225
+ declarative (< 0.1.0)
226
+ trailblazer-option (>= 0.1.1, < 0.2.0)
227
+ uber (< 0.2.0)
228
+ retriable (3.1.2)
229
+ rexml (3.2.5)
230
+ rouge (2.0.7)
231
+ ruby-macho (2.5.1)
232
+ ruby2_keywords (0.0.5)
233
+ rubyzip (2.3.2)
234
+ security (0.1.3)
235
+ signet (0.17.0)
236
+ addressable (~> 2.8)
237
+ faraday (>= 0.17.5, < 3.a)
238
+ jwt (>= 1.5, < 3.0)
239
+ multi_json (~> 1.10)
240
+ simctl (1.6.10)
241
+ CFPropertyList
242
+ naturally
243
+ terminal-notifier (2.0.0)
244
+ terminal-table (1.8.0)
245
+ unicode-display_width (~> 1.1, >= 1.1.1)
246
+ trailblazer-option (0.1.2)
247
+ tty-cursor (0.7.1)
248
+ tty-screen (0.8.1)
249
+ tty-spinner (0.9.3)
250
+ tty-cursor (~> 0.7)
251
+ typhoeus (1.4.0)
252
+ ethon (>= 0.9.0)
253
+ tzinfo (2.0.6)
254
+ concurrent-ruby (~> 1.0)
255
+ uber (0.1.0)
256
+ unf (0.1.4)
257
+ unf_ext
258
+ unf_ext (0.0.8.2)
259
+ unicode-display_width (1.8.0)
260
+ webrick (1.8.1)
261
+ word_wrap (1.0.0)
262
+ xcodeproj (1.22.0)
263
+ CFPropertyList (>= 2.3.3, < 4.0)
264
+ atomos (~> 0.1.3)
265
+ claide (>= 1.0.2, < 2.0)
266
+ colored2 (~> 3.1)
267
+ nanaimo (~> 0.3.0)
268
+ rexml (~> 3.2.4)
269
+ xcpretty (0.3.0)
270
+ rouge (~> 2.0.7)
271
+ xcpretty-travis-formatter (1.0.1)
272
+ xcpretty (~> 0.2, >= 0.0.7)
273
+
274
+ PLATFORMS
275
+ arm64-darwin-20
276
+ arm64-darwin-21
277
+
278
+ DEPENDENCIES
279
+ cocoapods
280
+ fastlane
281
+ rake
282
+
283
+ BUNDLED WITH
284
+ 2.4.10
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2023 xord.org
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
data/Podfile ADDED
@@ -0,0 +1,31 @@
1
+ # -*- mode: ruby -*-
2
+
3
+ platform :ios, '14.0'
4
+
5
+ %w[RubySolitaire RubySolitaireTests].each do |t|
6
+ target t do
7
+ pod 'CRuby', git: 'https://github.com/xord/cruby.git'
8
+ pod 'RubySketch', git: 'https://github.com/xord/rubysketch.git'
9
+ end
10
+ end
11
+
12
+
13
+ post_install do |installer|
14
+ each_build_configuration installer do |c|
15
+ c.build_settings['ARCHS'] = 'arm64'
16
+ c.build_settings['VALID_ARCHS'] = 'arm64'
17
+ c.build_settings['ENABLE_BITCODE'] = 'NO'
18
+ end
19
+ end
20
+
21
+ def each_build_configuration (installer, &block)
22
+ installer.pods_project.build_configurations.each do |config|
23
+ block.call config
24
+ end
25
+
26
+ installer.pods_project.targets.each do |target|
27
+ target.build_configurations.each do |config|
28
+ block.call config
29
+ end
30
+ end
31
+ end
data/Podfile.lock ADDED
@@ -0,0 +1,59 @@
1
+ PODS:
2
+ - CRuby (3.2.202)
3
+ - RubySketch (0.5.12):
4
+ - RubySketch/Beeps (= 0.5.12)
5
+ - RubySketch/Rays (= 0.5.12)
6
+ - RubySketch/Reflex (= 0.5.12)
7
+ - RubySketch/Rucy (= 0.5.12)
8
+ - RubySketch/Xot (= 0.5.12)
9
+ - RubySketch/Beeps (0.5.12):
10
+ - RubySketch/Beeps/Ext (= 0.5.12)
11
+ - RubySketch/Beeps/R8BrainFreeSrc (= 0.5.12)
12
+ - RubySketch/Beeps/STK (= 0.5.12)
13
+ - RubySketch/Beeps/Ext (0.5.12)
14
+ - RubySketch/Beeps/R8BrainFreeSrc (0.5.12)
15
+ - RubySketch/Beeps/STK (0.5.12)
16
+ - RubySketch/Rays (0.5.12):
17
+ - RubySketch/Rays/Clipper (= 0.5.12)
18
+ - RubySketch/Rays/Ext (= 0.5.12)
19
+ - RubySketch/Rays/Poly2Tri (= 0.5.12)
20
+ - RubySketch/Rays/SplineLib (= 0.5.12)
21
+ - RubySketch/Rays/Clipper (0.5.12)
22
+ - RubySketch/Rays/Ext (0.5.12)
23
+ - RubySketch/Rays/Poly2Tri (0.5.12)
24
+ - RubySketch/Rays/SplineLib (0.5.12)
25
+ - RubySketch/Reflex (0.5.12):
26
+ - RubySketch/Reflex/Box2D (= 0.5.12)
27
+ - RubySketch/Reflex/Ext (= 0.5.12)
28
+ - RubySketch/Reflex/Box2D (0.5.12)
29
+ - RubySketch/Reflex/Ext (0.5.12)
30
+ - RubySketch/Rucy (0.5.12):
31
+ - RubySketch/Rucy/Ext (= 0.5.12)
32
+ - RubySketch/Rucy/Ext (0.5.12)
33
+ - RubySketch/Xot (0.5.12)
34
+
35
+ DEPENDENCIES:
36
+ - CRuby (from `https://github.com/xord/cruby.git`)
37
+ - RubySketch (from `https://github.com/xord/rubysketch.git`)
38
+
39
+ EXTERNAL SOURCES:
40
+ CRuby:
41
+ :git: https://github.com/xord/cruby.git
42
+ RubySketch:
43
+ :git: https://github.com/xord/rubysketch.git
44
+
45
+ CHECKOUT OPTIONS:
46
+ CRuby:
47
+ :commit: 133060a967e6acbf4aad3971b369acab86029065
48
+ :git: https://github.com/xord/cruby.git
49
+ RubySketch:
50
+ :commit: e3abcf7e652a328a76e54ab0d1fa601bc7f1a43f
51
+ :git: https://github.com/xord/rubysketch.git
52
+
53
+ SPEC CHECKSUMS:
54
+ CRuby: f677262f16d7c714efd3021c90246296cf5bf9c3
55
+ RubySketch: 76a0f9a7aff07b74bbfe2d715322607e29eac971
56
+
57
+ PODFILE CHECKSUM: 3ad0b358d0bc13ea451aa93df078142a38c591fc
58
+
59
+ COCOAPODS: 1.12.1
data/README.md ADDED
@@ -0,0 +1,21 @@
1
+ # Solitaire game made with RubySketch
2
+
3
+ ## How to use
4
+
5
+ ### Run local scripts on macOS
6
+
7
+ ```sh
8
+ $ gem install rubysketch
9
+ $ ruby -Ilib -rrubysketch/solitaire -e ''
10
+ ```
11
+
12
+ ### Run on macOS using RubyGems
13
+
14
+ ```sh
15
+ $ gem install rubysketch-solitaire
16
+ $ ruby -rrubysketch/solitaire -e ''
17
+ ```
18
+
19
+ ## License
20
+
21
+ see [LICENSE](LICENSE) file
data/Rakefile ADDED
@@ -0,0 +1,100 @@
1
+ # -*- mode: ruby -*-
2
+
3
+
4
+ %w[../xot .]
5
+ .map {|s| File.expand_path "#{s}/lib", __dir__}
6
+ .each {|s| $:.unshift s if !$:.include?(s) && File.directory?(s)}
7
+
8
+ require 'xot/rake'
9
+
10
+ require 'xot/extension'
11
+ require 'rubysketch/solitaire/extension'
12
+
13
+
14
+ EXTENSIONS = [RubySketch::Solitaire]
15
+
16
+ GEMNAME = "rubysketch-#{target.name.downcase}"
17
+
18
+ NAME_IOS = "Ruby#{target.name}"
19
+ XCWORKSPACE = "#{NAME_IOS}.xcworkspace"
20
+ XCODEPROJ = "#{NAME_IOS}.xcodeproj"
21
+
22
+ BUNDLE_DIR = 'vendor/bundle'
23
+ PODS_DIR = 'Pods'
24
+
25
+
26
+ default_tasks
27
+ build_ruby_gem
28
+
29
+
30
+ task :build => 'xcode:build'
31
+
32
+ task :xcode => 'xcode:open'
33
+
34
+ task :update => %w[bundle pods].map {|s| "#{s}:update"}
35
+
36
+ task :clean => %w[gem xcode].map {|s| "#{s}:clean"}
37
+
38
+ task :clobber => %w[xcode bundle pods].map {|s| "#{s}:clobber"}
39
+
40
+ task :run do
41
+ libs = %w[xot rucy beeps rays reflex processing rubysketch]
42
+ .map {|lib| "-I#{ENV['ALL']}/#{lib}/lib"}
43
+ sh %( ruby #{libs.join ' '} -Ilib -rrubysketch/solitaire -e '' )
44
+ end
45
+
46
+
47
+ namespace :xcode do
48
+ task :clean do
49
+ sh %( xcodebuild clean ) if File.exist?(XCODEPROJ)
50
+ end
51
+
52
+ task :clobber => 'xcode:clean' do
53
+ sh %( rm -rf #{XCWORKSPACE} #{XCODEPROJ} )
54
+ end
55
+
56
+ task :build => XCWORKSPACE do
57
+ sh %( xcodebuild build )
58
+ end
59
+
60
+ task :open => XCWORKSPACE do
61
+ sh %( open #{XCWORKSPACE} )
62
+ end
63
+
64
+ file XCWORKSPACE => [BUNDLE_DIR, PODS_DIR]
65
+
66
+ file XCODEPROJ do
67
+ sh %( xcodegen generate )
68
+ end
69
+ end
70
+
71
+
72
+ namespace :bundle do
73
+ task :clobber do
74
+ sh %( rm -rf #{BUNDLE_DIR} )
75
+ end
76
+
77
+ task :update do
78
+ sh %( bundle update )
79
+ end
80
+
81
+ file BUNDLE_DIR do
82
+ sh %( bundle install )
83
+ raise "failed to bundle install" unless File.exist? BUNDLE_DIR
84
+ end
85
+ end
86
+
87
+
88
+ namespace :pods do
89
+ task :clobber do
90
+ sh %( rm -rf #{PODS_DIR} )
91
+ end
92
+
93
+ task :update => [BUNDLE_DIR, XCODEPROJ] do
94
+ sh %( bundle exec pod update --verbose )
95
+ end
96
+
97
+ file PODS_DIR => [BUNDLE_DIR, XCODEPROJ] do
98
+ sh %( bundle exec pod install --verbose --repo-update )
99
+ end
100
+ end