code-ruby 3.0.6 → 3.0.7

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.
Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +8 -0
  3. data/Gemfile.lock +1 -1
  4. data/VERSION +1 -1
  5. data/bin/code +27 -3
  6. data/lib/code/error.rb +10 -5
  7. data/lib/code/extensions/active_support.rb +9 -0
  8. data/lib/code/extensions/array.rb +7 -0
  9. data/lib/code/extensions/big_decimal.rb +9 -0
  10. data/lib/code/extensions/class.rb +7 -0
  11. data/lib/code/extensions/false_class.rb +7 -0
  12. data/lib/code/extensions/float.rb +9 -0
  13. data/lib/code/extensions/hash.rb +7 -0
  14. data/lib/code/extensions/integer.rb +9 -0
  15. data/lib/code/extensions/module.rb +7 -0
  16. data/lib/code/extensions/nil_class.rb +7 -0
  17. data/lib/code/extensions/nokogiri.rb +11 -0
  18. data/lib/code/extensions/object.rb +9 -0
  19. data/lib/code/extensions/string.rb +7 -0
  20. data/lib/code/extensions/symbol.rb +7 -0
  21. data/lib/code/extensions/true_class.rb +7 -0
  22. data/lib/code/extensions/word_number_comparaisons.rb +407 -0
  23. data/lib/code/format.rb +73 -56
  24. data/lib/code/node/code.rb +2 -1
  25. data/lib/code/node/statement.rb +4 -2
  26. data/lib/code/node/string.rb +1 -1
  27. data/lib/code/node/while.rb +8 -10
  28. data/lib/code/object/date.rb +37 -17
  29. data/lib/code/object/function.rb +23 -11
  30. data/lib/code/object/global.rb +5 -4
  31. data/lib/code/object/html.rb +169 -52
  32. data/lib/code/object/http.rb +8 -8
  33. data/lib/code/object/ics.rb +22 -18
  34. data/lib/code/object/identifier_list.rb +12 -10
  35. data/lib/code/object/list.rb +1 -5
  36. data/lib/code/object/super.rb +2 -1
  37. data/lib/code/object/time.rb +46 -44
  38. data/lib/code/parser.rb +342 -121
  39. data/lib/code-ruby.rb +16 -149
  40. data/spec/bin/code_spec.rb +32 -0
  41. data/spec/code/format_spec.rb +7 -10
  42. data/spec/code/node/call_spec.rb +1 -3
  43. data/spec/code/object/function_spec.rb +4 -8
  44. data/spec/code/object/http_spec.rb +20 -0
  45. data/spec/code/object/ics_spec.rb +5 -5
  46. data/spec/code/object/list_spec.rb +1 -1
  47. data/spec/code/parser_spec.rb +22 -0
  48. data/spec/code_spec.rb +347 -328
  49. metadata +18 -2
  50. data/applies +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 41aa1a3c827ca62c0208e3b1f4a41c31dd03435a53d0f7df7a47a32ba8e8b415
4
- data.tar.gz: '012187cae621381c9d1d7dd80efff85983f76b11f10ee66776d1907d286fa1f2'
3
+ metadata.gz: 4241e470b81d44e429887c08e62046e2f6f9a461eba2c44979d0d26891d50dc8
4
+ data.tar.gz: 756f4b91f0b73841c14ad652ea28da7d1304c49f1fb0692eec4d9e18fec0d58e
5
5
  SHA512:
6
- metadata.gz: 57a734a4f7baa595698a25be3523079f9178e517068d209ebed671dba1cf058fc91bb1250c63520d4e0686f4f02354eef95d52361bb0921e5b26c74b65b2a208
7
- data.tar.gz: 74f42509e693e0238f38684b89a073bf8c17c81f2197602c630b1f499805ac77eabc8c22e9ae69973f583f24f909dce698228c7199287461b4e999e089c81ab4
6
+ metadata.gz: bdd9da9845c9785447fe20c56b31c6a25b3ac511e45d015062f1536f93c6db94b01c52d5f80a8ef9f98e223d286c685eb1d47c2d2f53c5dc4f206247011415d6
7
+ data.tar.gz: f6af560ee806eb0ab3636370fad3e8ec807f3e7e0825956cca5357a788b02f9eefa14dfc9ec9e5e34f050e71f2a31e635b8864d82cd371eefa93d1d04e673282
data/.rubocop.yml CHANGED
@@ -8,12 +8,18 @@ AllCops:
8
8
  TargetRubyVersion: 3.0
9
9
  Layout/ClosingHeredocIndentation:
10
10
  Enabled: false
11
+ Layout/ElseAlignment:
12
+ Enabled: false
13
+ Layout/EndAlignment:
14
+ Enabled: false
11
15
  Layout/FirstArgumentIndentation:
12
16
  Enabled: false
13
17
  Layout/HashAlignment:
14
18
  Enabled: false
15
19
  Layout/HeredocIndentation:
16
20
  Enabled: false
21
+ Layout/IndentationWidth:
22
+ Enabled: false
17
23
  Layout/LineEndStringConcatenationIndentation:
18
24
  Enabled: false
19
25
  Layout/LineLength:
@@ -22,6 +28,8 @@ Layout/MultilineMethodCallIndentation:
22
28
  Enabled: false
23
29
  Layout/MultilineOperationIndentation:
24
30
  Enabled: false
31
+ Layout/SpaceAroundKeyword:
32
+ Enabled: false
25
33
  Layout/SpaceInsideHashLiteralBraces:
26
34
  Enabled: false
27
35
  Lint/EmptyClass:
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- code-ruby (3.0.6)
4
+ code-ruby (3.0.7)
5
5
  activesupport
6
6
  base64
7
7
  bigdecimal
data/VERSION CHANGED
@@ -1 +1 @@
1
- 3.0.6
1
+ 3.0.7
data/bin/code CHANGED
@@ -37,17 +37,41 @@ parsed =
37
37
  abort Code::Version.to_s if parsed.options.version
38
38
  abort parsed.help if parsed.options.help
39
39
 
40
+ def glob_pattern?(value)
41
+ value.match?(/[*?\[\]{]/)
42
+ end
43
+
44
+ expanded_argument_files = []
45
+ remaining_arguments = []
46
+
47
+ parsed.arguments.each do |argument|
48
+ if glob_pattern?(argument)
49
+ matches = Dir.glob(argument).select { |path| File.file?(path) }
50
+
51
+ if matches.any?
52
+ expanded_argument_files.concat(matches)
53
+ else
54
+ remaining_arguments << argument
55
+ end
56
+ else
57
+ remaining_arguments << argument
58
+ end
59
+ end
60
+
40
61
  input = parsed.options.input.to_s
41
62
  input += File.read(input) if File.exist?(input)
42
- input += parsed.arguments.join(" ")
43
- input += parsed.files.map { |file| File.read(file) }.join
63
+ input += remaining_arguments.join(" ")
64
+ input +=
65
+ (parsed.files + expanded_argument_files)
66
+ .map { |file| File.read(file) }
67
+ .join("\n\n")
44
68
 
45
69
  profile = parsed.options.profile || parsed.options.profiler
46
70
  require "ruby-prof" if profile
47
71
 
48
72
  RubyProf.start if profile
49
73
 
50
- input = STDIN.each_line.to_a.join if input.empty?
74
+ input = $stdin.each_line.to_a.join if input.empty?
51
75
 
52
76
  if parsed.options.parse
53
77
  begin
data/lib/code/error.rb CHANGED
@@ -10,14 +10,19 @@ class Code
10
10
  end
11
11
  end
12
12
 
13
- class Break < ControlFlow; end
13
+ class Break < ControlFlow
14
+ end
14
15
 
15
- class Next < ControlFlow; end
16
+ class Next < ControlFlow
17
+ end
16
18
 
17
- class Continue < Next; end
19
+ class Continue < Next
20
+ end
18
21
 
19
- class Return < ControlFlow; end
22
+ class Return < ControlFlow
23
+ end
20
24
 
21
- class Retry < ControlFlow; end
25
+ class Retry < ControlFlow
26
+ end
22
27
  end
23
28
  end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ActiveSupport
4
+ class TimeWithZone
5
+ def to_code
6
+ Code::Object::Time.new(self)
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Array
4
+ def to_code
5
+ Code::Object::List.new(self)
6
+ end
7
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ class BigDecimal
4
+ include WordNumberComparaisons
5
+
6
+ def to_code
7
+ Code::Object::Decimal.new(self)
8
+ end
9
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Class
4
+ def to_code
5
+ Code::Object::Class.new(self)
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ class FalseClass
4
+ def to_code
5
+ Code::Object::Boolean.new(self)
6
+ end
7
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Float
4
+ include WordNumberComparaisons
5
+
6
+ def to_code
7
+ Code::Object::Decimal.new(self)
8
+ end
9
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Hash
4
+ def to_code
5
+ Code::Object::Dictionary.new(self)
6
+ end
7
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Integer
4
+ include WordNumberComparaisons
5
+
6
+ def to_code
7
+ Code::Object::Integer.new(self)
8
+ end
9
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Module
4
+ def to_code
5
+ Code::Object::Class.new(self)
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ class NilClass
4
+ def to_code
5
+ Code::Object::Nothing.new(self)
6
+ end
7
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Nokogiri
4
+ module XML
5
+ class Element
6
+ def to_code
7
+ Code::Object::Html.new(self)
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Object
4
+ alias is_an? is_a?
5
+
6
+ def to_code
7
+ raise NotImplementedError, "to_code not defined on #{self.class.name}"
8
+ end
9
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ class String
4
+ def to_code
5
+ Code::Object::String.new(self)
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Symbol
4
+ def to_code
5
+ Code::Object::String.new(self)
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ class TrueClass
4
+ def to_code
5
+ Code::Object::Boolean.new(self)
6
+ end
7
+ end
@@ -0,0 +1,407 @@
1
+ # frozen_string_literal: true
2
+
3
+ module WordNumberComparaisons
4
+ def zero?
5
+ zero?
6
+ end
7
+
8
+ def one?
9
+ self == 1
10
+ end
11
+
12
+ def two?
13
+ self == 2
14
+ end
15
+
16
+ def three?
17
+ self == 3
18
+ end
19
+
20
+ def four?
21
+ self == 4
22
+ end
23
+
24
+ def five?
25
+ self == 5
26
+ end
27
+
28
+ def six?
29
+ self == 6
30
+ end
31
+
32
+ def seven?
33
+ self == 7
34
+ end
35
+
36
+ def eight?
37
+ self == 8
38
+ end
39
+
40
+ def nine?
41
+ self == 9
42
+ end
43
+
44
+ def ten?
45
+ self == 10
46
+ end
47
+
48
+ def eleven?
49
+ self == 11
50
+ end
51
+
52
+ def twelve?
53
+ self == 12
54
+ end
55
+
56
+ def thirteen?
57
+ self == 13
58
+ end
59
+
60
+ def fourteen?
61
+ self == 14
62
+ end
63
+
64
+ def fifteen?
65
+ self == 15
66
+ end
67
+
68
+ def sixteen?
69
+ self == 16
70
+ end
71
+
72
+ def seventeen?
73
+ self == 17
74
+ end
75
+
76
+ def eighteen?
77
+ self == 18
78
+ end
79
+
80
+ def nineteen?
81
+ self == 19
82
+ end
83
+
84
+ def twenty?
85
+ self == 20
86
+ end
87
+
88
+ def twenty_one?
89
+ self == 21
90
+ end
91
+
92
+ def twenty_two?
93
+ self == 22
94
+ end
95
+
96
+ def twenty_three?
97
+ self == 23
98
+ end
99
+
100
+ def twenty_four?
101
+ self == 24
102
+ end
103
+
104
+ def twenty_five?
105
+ self == 25
106
+ end
107
+
108
+ def twenty_six?
109
+ self == 26
110
+ end
111
+
112
+ def twenty_seven?
113
+ self == 27
114
+ end
115
+
116
+ def twenty_eight?
117
+ self == 28
118
+ end
119
+
120
+ def twenty_nine?
121
+ self == 29
122
+ end
123
+
124
+ def thirty?
125
+ self == 30
126
+ end
127
+
128
+ def thirty_one?
129
+ self == 31
130
+ end
131
+
132
+ def thirty_two?
133
+ self == 32
134
+ end
135
+
136
+ def thirty_three?
137
+ self == 33
138
+ end
139
+
140
+ def thirty_four?
141
+ self == 34
142
+ end
143
+
144
+ def thirty_five?
145
+ self == 35
146
+ end
147
+
148
+ def thirty_six?
149
+ self == 36
150
+ end
151
+
152
+ def thirty_seven?
153
+ self == 37
154
+ end
155
+
156
+ def thirty_eight?
157
+ self == 38
158
+ end
159
+
160
+ def thirty_nine?
161
+ self == 39
162
+ end
163
+
164
+ def forty?
165
+ self == 40
166
+ end
167
+
168
+ def forty_one?
169
+ self == 41
170
+ end
171
+
172
+ def forty_two?
173
+ self == 42
174
+ end
175
+
176
+ def forty_three?
177
+ self == 43
178
+ end
179
+
180
+ def forty_four?
181
+ self == 44
182
+ end
183
+
184
+ def forty_five?
185
+ self == 45
186
+ end
187
+
188
+ def forty_six?
189
+ self == 46
190
+ end
191
+
192
+ def forty_seven?
193
+ self == 47
194
+ end
195
+
196
+ def forty_eight?
197
+ self == 48
198
+ end
199
+
200
+ def forty_nine?
201
+ self == 49
202
+ end
203
+
204
+ def fifty?
205
+ self == 50
206
+ end
207
+
208
+ def fifty_one?
209
+ self == 51
210
+ end
211
+
212
+ def fifty_two?
213
+ self == 52
214
+ end
215
+
216
+ def fifty_three?
217
+ self == 53
218
+ end
219
+
220
+ def fifty_four?
221
+ self == 54
222
+ end
223
+
224
+ def fifty_five?
225
+ self == 55
226
+ end
227
+
228
+ def fifty_six?
229
+ self == 56
230
+ end
231
+
232
+ def fifty_seven?
233
+ self == 57
234
+ end
235
+
236
+ def fifty_eight?
237
+ self == 58
238
+ end
239
+
240
+ def fifty_nine?
241
+ self == 59
242
+ end
243
+
244
+ def sixty?
245
+ self == 60
246
+ end
247
+
248
+ def sixty_one?
249
+ self == 61
250
+ end
251
+
252
+ def sixty_two?
253
+ self == 62
254
+ end
255
+
256
+ def sixty_three?
257
+ self == 63
258
+ end
259
+
260
+ def sixty_four?
261
+ self == 64
262
+ end
263
+
264
+ def sixty_five?
265
+ self == 65
266
+ end
267
+
268
+ def sixty_six?
269
+ self == 66
270
+ end
271
+
272
+ def sixty_seven?
273
+ self == 67
274
+ end
275
+
276
+ def sixty_eight?
277
+ self == 68
278
+ end
279
+
280
+ def sixty_nine?
281
+ self == 69
282
+ end
283
+
284
+ def seventy?
285
+ self == 70
286
+ end
287
+
288
+ def seventy_one?
289
+ self == 71
290
+ end
291
+
292
+ def seventy_two?
293
+ self == 72
294
+ end
295
+
296
+ def seventy_three?
297
+ self == 73
298
+ end
299
+
300
+ def seventy_four?
301
+ self == 74
302
+ end
303
+
304
+ def seventy_five?
305
+ self == 75
306
+ end
307
+
308
+ def seventy_six?
309
+ self == 76
310
+ end
311
+
312
+ def seventy_seven?
313
+ self == 77
314
+ end
315
+
316
+ def seventy_eight?
317
+ self == 78
318
+ end
319
+
320
+ def seventy_nine?
321
+ self == 79
322
+ end
323
+
324
+ def eighty?
325
+ self == 80
326
+ end
327
+
328
+ def eighty_one?
329
+ self == 81
330
+ end
331
+
332
+ def eighty_two?
333
+ self == 82
334
+ end
335
+
336
+ def eighty_three?
337
+ self == 83
338
+ end
339
+
340
+ def eighty_four?
341
+ self == 84
342
+ end
343
+
344
+ def eighty_five?
345
+ self == 85
346
+ end
347
+
348
+ def eighty_six?
349
+ self == 86
350
+ end
351
+
352
+ def eighty_seven?
353
+ self == 87
354
+ end
355
+
356
+ def eighty_eight?
357
+ self == 88
358
+ end
359
+
360
+ def eighty_nine?
361
+ self == 89
362
+ end
363
+
364
+ def ninety?
365
+ self == 90
366
+ end
367
+
368
+ def ninety_one?
369
+ self == 91
370
+ end
371
+
372
+ def ninety_two?
373
+ self == 92
374
+ end
375
+
376
+ def ninety_three?
377
+ self == 93
378
+ end
379
+
380
+ def ninety_four?
381
+ self == 94
382
+ end
383
+
384
+ def ninety_five?
385
+ self == 95
386
+ end
387
+
388
+ def ninety_six?
389
+ self == 96
390
+ end
391
+
392
+ def ninety_seven?
393
+ self == 97
394
+ end
395
+
396
+ def ninety_eight?
397
+ self == 98
398
+ end
399
+
400
+ def ninety_nine?
401
+ self == 99
402
+ end
403
+
404
+ def one_hundred?
405
+ self == 100
406
+ end
407
+ end