code-ruby 2.0.2 → 3.0.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.
Files changed (61) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +1 -1
  3. data/VERSION +1 -1
  4. data/lib/code/format.rb +4 -2
  5. data/lib/code/node/square_bracket.rb +6 -1
  6. data/lib/code/parser.rb +1113 -6
  7. data/lib/code-ruby.rb +0 -1
  8. data/spec/code/node/call_spec.rb +1 -1
  9. data/spec/code/parser/boolean_spec.rb +1 -1
  10. data/spec/code/parser/chained_call_spec.rb +1 -1
  11. data/spec/code/parser/dictionary_spec.rb +1 -1
  12. data/spec/code/parser/function_spec.rb +1 -1
  13. data/spec/code/parser/group_spec.rb +1 -1
  14. data/spec/code/parser/if_modifier_spec.rb +1 -1
  15. data/spec/code/parser/list_spec.rb +1 -1
  16. data/spec/code/parser/number_spec.rb +1 -1
  17. data/spec/code/parser/string_spec.rb +1 -1
  18. data/spec/code_spec.rb +2 -1
  19. metadata +1 -43
  20. data/lib/code/parser/addition.rb +0 -23
  21. data/lib/code/parser/and_operator.rb +0 -19
  22. data/lib/code/parser/bitwise_and.rb +0 -23
  23. data/lib/code/parser/bitwise_or.rb +0 -23
  24. data/lib/code/parser/boolean.rb +0 -23
  25. data/lib/code/parser/call.rb +0 -165
  26. data/lib/code/parser/chained_call.rb +0 -31
  27. data/lib/code/parser/class.rb +0 -15
  28. data/lib/code/parser/code.rb +0 -27
  29. data/lib/code/parser/dictionary.rb +0 -76
  30. data/lib/code/parser/equal.rb +0 -67
  31. data/lib/code/parser/equality.rb +0 -42
  32. data/lib/code/parser/function.rb +0 -135
  33. data/lib/code/parser/greater.rb +0 -32
  34. data/lib/code/parser/group.rb +0 -58
  35. data/lib/code/parser/if.rb +0 -101
  36. data/lib/code/parser/if_modifier.rb +0 -39
  37. data/lib/code/parser/label_name.rb +0 -14
  38. data/lib/code/parser/left_operation.rb +0 -44
  39. data/lib/code/parser/list.rb +0 -47
  40. data/lib/code/parser/multiplication.rb +0 -39
  41. data/lib/code/parser/name.rb +0 -188
  42. data/lib/code/parser/negation.rb +0 -32
  43. data/lib/code/parser/not_keyword.rb +0 -29
  44. data/lib/code/parser/nothing.rb +0 -19
  45. data/lib/code/parser/number.rb +0 -156
  46. data/lib/code/parser/or_keyword.rb +0 -27
  47. data/lib/code/parser/or_operator.rb +0 -19
  48. data/lib/code/parser/power.rb +0 -19
  49. data/lib/code/parser/range.rb +0 -19
  50. data/lib/code/parser/rescue.rb +0 -19
  51. data/lib/code/parser/right_operation.rb +0 -44
  52. data/lib/code/parser/shift.rb +0 -23
  53. data/lib/code/parser/splat.rb +0 -33
  54. data/lib/code/parser/square_bracket.rb +0 -44
  55. data/lib/code/parser/statement.rb +0 -11
  56. data/lib/code/parser/string.rb +0 -85
  57. data/lib/code/parser/ternary.rb +0 -45
  58. data/lib/code/parser/unary_minus.rb +0 -33
  59. data/lib/code/parser/while.rb +0 -81
  60. data/lib/code/parser/whitespace.rb +0 -51
  61. data/spec/code/object/identifier_list_spec.rb +0 -60
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 26d4b2a42933e4c3b408c6363ecbd343c106e117d469e196f5088c5db5ecfb8f
4
- data.tar.gz: a888fd3dc5f2987dae06dffe0df43f00ca3c031404e48390d53d201078224808
3
+ metadata.gz: 6764dfae8187cff0c8c1a5cb3877fa76359791c2a5c3dbecc074cf01a1764f38
4
+ data.tar.gz: 8b1aef62dec7e892e71047c8c1704de6396096a437e9a5e35dc37b53d2c8d09d
5
5
  SHA512:
6
- metadata.gz: 1c3f838b4cdd9a17c18ad194dd035e281b64d8ff9c536e935f903dfbd8d6a82e64fcb04ae37d8ed0f49e764269f4d70d8f0ca44d3d6314c9bd5fe13864cb88df
7
- data.tar.gz: 42435bd8fafc85bdfb3b4fd6af6b033942f7bb4e03e49e6ddc93079e2caeb6bbd08dc33214d79e2324abfb528be1debe6c82600ffebf84601a21e6a54c997e77
6
+ metadata.gz: 06eb3f841f44f59cd55a6ce4518df768be00db976daf3119383f80ff93f21f948935fad9e16d2eb13becf8004e5b0568510c2012502d51be22a4dd2d4f8f1428
7
+ data.tar.gz: 5389937455b8120b48c26772255e287b156a4ed9cb37e36013e8443cb67de69948845ca5d77087f1c76c834a06554d2a6ff00a9a9c00718b8da5ef847b9f2d6e
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- code-ruby (2.0.2)
4
+ code-ruby (3.0.1)
5
5
  activesupport
6
6
  base64
7
7
  bigdecimal
data/VERSION CHANGED
@@ -1 +1 @@
1
- 2.0.2
1
+ 3.0.1
data/lib/code/format.rb CHANGED
@@ -279,7 +279,7 @@ class Code
279
279
  end
280
280
 
281
281
  def format_dictionary(key_values, indent:)
282
- return "{}" if key_values == "" || key_values.nil?
282
+ return "{}" if key_values == "" || key_values.nil? || key_values == []
283
283
 
284
284
  values =
285
285
  Array(key_values).map do |key_value|
@@ -321,8 +321,10 @@ class Code
321
321
  raw_arguments = call[:arguments].presence || []
322
322
  arguments = raw_arguments.map { |arg| format_call_argument(arg) }
323
323
  statement =
324
- if arguments.empty?
324
+ if arguments.empty? && !call.key?(:arguments)
325
325
  name.to_s
326
+ elsif arguments.empty?
327
+ "#{name}()"
326
328
  elsif multiline_call_arguments?(raw_arguments, arguments)
327
329
  body = arguments.map { |arg| indent_lines(arg, indent + 1) }.join(",\n")
328
330
  "#{name}(\n#{body}\n#{INDENT * indent})"
@@ -22,7 +22,12 @@ class Code
22
22
  def resolve(**args)
23
23
  left = @left&.resolve(**args) || Object::Nothing.new
24
24
 
25
- list = Object::IdentifierList.new([left])
25
+ list =
26
+ if left.is_an?(Object::IdentifierList)
27
+ Object::IdentifierList.new(left.raw.dup)
28
+ else
29
+ Object::IdentifierList.new([left])
30
+ end
26
31
 
27
32
  (@statements || []).each do |statement|
28
33
  list.code_append(statement.evaluate(**args))