code-ruby 0.6.3 → 0.6.4

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
  SHA256:
3
- metadata.gz: 7ab3a0f0749357d4065315d58b613f8d44cba5f567b6ae33444cff90c1dedde0
4
- data.tar.gz: b48a0d5c713c0eb33c53bd30fafaaa7bc03f657a7ac7a5c70ae257eedf677cc0
3
+ metadata.gz: 2885af9560ee132a0d9ab0be653fadd74e54e04975a1673ff98d929e14040088
4
+ data.tar.gz: 68450cd4d425cc61bccd154f32b7786a2e7f0778ca567a2e19346b017f6e40c2
5
5
  SHA512:
6
- metadata.gz: e137c317b1d87a1a61d30ce70d4bccdd75417ab002c6ad57249081f2e8b8189e4194efaad6e277f68448fa8f55b1402e337d5387d34449b69fce4425b17d72e7
7
- data.tar.gz: 2bdfced46d44b0ef4787a998fb17ce073b38a939d044a9f48f39c74dc42adbec3962622792f9852579203f090a66db78dc45aa118d25ff325089cde03cb00c93
6
+ metadata.gz: f090263fb431fa7d6ab1193bd5735b8ef8c425783eea75c8495537a2f2c80576dbe8a71ecf3d41202eea787687cdf9f2d6ef0b4dcec931e38be9cc28baa2ed50
7
+ data.tar.gz: d2fbf7f1e6534a1f15e9fca4271b9505fb0229984a53e85d9adbfaaeba5b94535cfde135eede3289f564f06949d0f4bb3c2ff3ac384ffa56596bb802eef2be7e
data/Gemfile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source "https://rubygems.org"
2
4
 
3
5
  gemspec
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- code-ruby (0.6.2)
4
+ code-ruby (0.6.3)
5
5
  bigdecimal (~> 3)
6
6
  language-ruby (~> 0)
7
7
  zeitwerk (~> 2)
@@ -11,7 +11,7 @@ GEM
11
11
  specs:
12
12
  bigdecimal (3.1.6)
13
13
  diff-lcs (1.5.0)
14
- language-ruby (0.6.0)
14
+ language-ruby (0.6.1)
15
15
  zeitwerk (~> 2)
16
16
  rspec (3.12.0)
17
17
  rspec-core (~> 3.12.0)
data/bin/code CHANGED
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
2
3
 
3
4
  require "optparse"
4
5
  require_relative "../lib/code-ruby"
@@ -9,7 +10,7 @@ OptionParser
9
10
  .new do |opts|
10
11
  opts.banner = "Usage: template [options]"
11
12
 
12
- opts.on("-v", "--version", "Version of template") do |input|
13
+ opts.on("-v", "--version", "Version of template") do |_input|
13
14
  puts Code::Version
14
15
  exit
15
16
  end
@@ -44,7 +45,7 @@ OptionParser
44
45
  "Set timeout in seconds"
45
46
  ) { |timeout| options[:timeout] = timeout.to_f }
46
47
 
47
- opts.on("--profile", "Profile Ruby code") do |timeout|
48
+ opts.on("--profile", "Profile Ruby code") do |_timeout|
48
49
  require "ruby-prof"
49
50
  options[:profile] = true
50
51
  end
data/code-ruby.gemspec CHANGED
@@ -1,3 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "English"
1
4
  require_relative "lib/code/version"
2
5
 
3
6
  Gem::Specification.new do |s|
@@ -7,14 +10,13 @@ Gem::Specification.new do |s|
7
10
  s.description = 'A programming language, like Code.evaluate("1 + 1") # => 2'
8
11
  s.authors = ["Dorian Marié"]
9
12
  s.email = "dorian@dorianmarie.fr"
10
- s.files = `git ls-files`.split($/)
11
- s.test_files = s.files.grep(%r{^(test|spec|features)/})
13
+ s.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
12
14
  s.require_paths = ["lib"]
13
15
  s.homepage = "https://github.com/dorianmariefr/code-ruby"
14
16
  s.license = "MIT"
15
17
  s.executables = "code"
16
18
 
17
- s.add_dependency "zeitwerk", "~> 2"
18
- s.add_dependency "language-ruby", "~> 0"
19
19
  s.add_dependency "bigdecimal", "~> 3"
20
+ s.add_dependency "language-ruby", "~> 0"
21
+ s.add_dependency "zeitwerk", "~> 2"
20
22
  end
@@ -3,7 +3,8 @@
3
3
  class Code
4
4
  class Node
5
5
  class Nothing < Node
6
- def initialize(parsed)
6
+ def initialize(nothing)
7
+ @nothing = nothing
7
8
  end
8
9
 
9
10
  def evaluate(**_args)
@@ -307,8 +307,8 @@ class Code
307
307
  self
308
308
  end
309
309
 
310
- def code_dig(*arguments)
311
- raw.dig(*arguments) || Nothing.new
310
+ def code_dig(*)
311
+ raw.dig(*) || Nothing.new
312
312
  end
313
313
 
314
314
  def code_each(argument, **globals)
@@ -335,8 +335,8 @@ class Code
335
335
  Boolean.new(raw.empty?)
336
336
  end
337
337
 
338
- def code_except(*arguments)
339
- self.class.new(raw.except(*arguments))
338
+ def code_except(*)
339
+ self.class.new(raw.except(*))
340
340
  end
341
341
 
342
342
  def code_fetch(*arguments, index: Integer.new(0), **globals)
@@ -394,8 +394,8 @@ class Code
394
394
  end
395
395
  end
396
396
 
397
- def code_fetch_values(*arguments)
398
- List.new(raw.fetch_values(*arguments))
397
+ def code_fetch_values(*)
398
+ List.new(raw.fetch_values(*))
399
399
  end
400
400
 
401
401
  def code_five?
@@ -33,7 +33,7 @@ class Code
33
33
  sig(args)
34
34
  code_downcase
35
35
  when "include?"
36
- sig(args) { { a: String } }
36
+ sig(args) { String }
37
37
  code_include?(value)
38
38
  when "reverse"
39
39
  sig(args)
data/lib/code/object.rb CHANGED
@@ -33,7 +33,7 @@ class Code
33
33
  other == self
34
34
  end
35
35
  end
36
- alias eql? ==
36
+ alias_method :eql?, :==
37
37
 
38
38
  def call(**args)
39
39
  operator = args.fetch(:operator, nil)
@@ -20,7 +20,7 @@ class Code
20
20
  end
21
21
 
22
22
  def backslash
23
- str('\\')
23
+ str("\\")
24
24
  end
25
25
 
26
26
  def opening_curly_bracket
@@ -11,9 +11,11 @@ class Code
11
11
 
12
12
  def valid?(argument)
13
13
  return false unless argument.is_a?(Object::Dictionary)
14
+
14
15
  argument = argument.raw
15
16
  (argument.keys + hash.keys).uniq.all? do |key|
16
17
  next false unless hash[key] && argument[key]
18
+
17
19
  valid_for?(expected: hash[key], actual: argument[key])
18
20
  end
19
21
  end
@@ -21,7 +21,7 @@ class Code
21
21
 
22
22
  def max_arguments
23
23
  max_arguments = max_arguments_of(clazz)
24
- max_arguments.nil? || maximum.nil? ? nil : maximum * max_arguments
24
+ (max_arguments.nil? || maximum.nil?) ? nil : maximum * max_arguments
25
25
  end
26
26
 
27
27
  def name
data/lib/code/version.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative "../code"
2
4
 
3
- Code::Version = Gem::Version.new("0.6.3")
5
+ Code::Version = Gem::Version.new("0.6.4")
data/lib/code-ruby.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "bigdecimal"
2
4
  require "stringio"
3
5
  require "timeout"
@@ -3,37 +3,35 @@
3
3
  require "spec_helper"
4
4
 
5
5
  RSpec.describe Code::Node::Call do
6
- =begin
7
- let(:context) { <<~CONTEXT }
8
- render = (*args, **kargs, &block) => {
9
- [args, kargs, block&.call(:dorian)]
10
- }
11
-
12
- { render:, user: { name: :Dorian } }"
13
- CONTEXT
14
-
15
- [
16
- ["render", "[[], {}, nothing]"],
17
- ["render()", "[[], {}, nothing]"],
18
- ["render(user)", "[[user], {}, nothing]"],
19
- [
20
- "render(user, first_name: :Dorian)",
21
- "[[user], { first_name: :Dorian }, nothing]"
22
- ],
23
- ["render { }", "[[], {}, nothing]"],
24
- ["render do end", "[[], {}, nothing]"],
25
- ["render { |name| name.upcase }", "[[], {}, :Dorian]"],
26
- ["render(user) { |name| name.upcase }", "[[user], {}, :Dorian]"],
27
- ["render(user) do |name| name.upcase end", "[[user], {}, :Dorian]"],
28
- ["render { :Dorian }", "[[], {}, :Dorian]"],
29
- ["render(user) { :Dorian }", "[[user], {}, :Dorian]"],
30
- ["render(user) do :Dorian end", "[[user], {}, :Dorian]"]
31
- ].each do |input, expected|
32
- it "#{input} == #{expected}" do
33
- expect(Code.evaluate(input, context)).to eq(
34
- Code.evaluate(expected, context)
35
- )
36
- end
37
- end
38
- =end
6
+ # let(:context) { <<~CONTEXT }
7
+ # render = (*args, **kargs, &block) => {
8
+ # [args, kargs, block&.call(:dorian)]
9
+ # }
10
+ #
11
+ # { render:, user: { name: :Dorian } }"
12
+ # CONTEXT
13
+ #
14
+ # [
15
+ # ["render", "[[], {}, nothing]"],
16
+ # ["render()", "[[], {}, nothing]"],
17
+ # ["render(user)", "[[user], {}, nothing]"],
18
+ # [
19
+ # "render(user, first_name: :Dorian)",
20
+ # "[[user], { first_name: :Dorian }, nothing]"
21
+ # ],
22
+ # ["render { }", "[[], {}, nothing]"],
23
+ # ["render do end", "[[], {}, nothing]"],
24
+ # ["render { |name| name.upcase }", "[[], {}, :Dorian]"],
25
+ # ["render(user) { |name| name.upcase }", "[[user], {}, :Dorian]"],
26
+ # ["render(user) do |name| name.upcase end", "[[user], {}, :Dorian]"],
27
+ # ["render { :Dorian }", "[[], {}, :Dorian]"],
28
+ # ["render(user) { :Dorian }", "[[user], {}, :Dorian]"],
29
+ # ["render(user) do :Dorian end", "[[user], {}, :Dorian]"]
30
+ # ].each do |input, expected|
31
+ # it "#{input} == #{expected}" do
32
+ # expect(Code.evaluate(input, context)).to eq(
33
+ # Code.evaluate(expected, context)
34
+ # )
35
+ # end
36
+ # end
39
37
  end
@@ -3,18 +3,16 @@
3
3
  require "spec_helper"
4
4
 
5
5
  RSpec.describe Code::Object::Function do
6
- =begin
7
- [
8
- ["even? = (i) => { i.even? } even?(2)", "true"],
9
- ["even? = (i:) => { i.even? } even?(i: 2)", "true"],
10
- ["add = (a, b) => { a + b } add(1, 2)", "3"],
11
- ["minus = (a:, b:) => { a - b } minus(b: 1, a: 2)", "1"]
12
- ].each do |input, expected|
13
- it "#{input} == #{expected}" do
14
- expect(Code.evaluate(input)).to eq(Code.evaluate(expected))
15
- end
16
- end
17
- =end
6
+ # [
7
+ # ["even? = (i) => { i.even? } even?(2)", "true"],
8
+ # ["even? = (i:) => { i.even? } even?(i: 2)", "true"],
9
+ # ["add = (a, b) => { a + b } add(1, 2)", "3"],
10
+ # ["minus = (a:, b:) => { a - b } minus(b: 1, a: 2)", "1"]
11
+ # ].each do |input, expected|
12
+ # it "#{input} == #{expected}" do
13
+ # expect(Code.evaluate(input)).to eq(Code.evaluate(expected))
14
+ # end
15
+ # end
18
16
 
19
17
  context "valid" do
20
18
  [
data/spec/code_spec.rb CHANGED
@@ -109,7 +109,7 @@ RSpec.describe Code do
109
109
  ['"Hello \\{name}"', '"Hello \\{" + "name}"'],
110
110
  ["'Hello {1}'", '"Hello 1"'],
111
111
  ['"Hello {1}"', '"Hello 1"'],
112
- [":Hello.include?(a: :H)", true],
112
+ %w[:Hello.include?(:H) true],
113
113
  %w["Hello".downcase :hello],
114
114
  ["true ? 1", "1"],
115
115
  ["false ? 1", ""],
data/spec/spec_helper.rb CHANGED
@@ -1 +1,3 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative "../lib/code-ruby"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: code-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.3
4
+ version: 0.6.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dorian Marié
@@ -11,19 +11,19 @@ cert_chain: []
11
11
  date: 2024-01-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: zeitwerk
14
+ name: bigdecimal
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '2'
19
+ version: '3'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '2'
26
+ version: '3'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: language-ruby
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -39,19 +39,19 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: bigdecimal
42
+ name: zeitwerk
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '3'
47
+ version: '2'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '3'
54
+ version: '2'
55
55
  description: 'A programming language, like Code.evaluate("1 + 1") # => 2'
56
56
  email: dorian@dorianmarie.fr
57
57
  executables:
@@ -206,30 +206,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
206
206
  - !ruby/object:Gem::Version
207
207
  version: '0'
208
208
  requirements: []
209
- rubygems_version: 3.5.5
209
+ rubygems_version: 3.5.3
210
210
  signing_key:
211
211
  specification_version: 4
212
212
  summary: A programming language
213
- test_files:
214
- - spec/code/node/call_spec.rb
215
- - spec/code/object/boolean_spec.rb
216
- - spec/code/object/decimal_spec.rb
217
- - spec/code/object/dictionary_spec.rb
218
- - spec/code/object/function_spec.rb
219
- - spec/code/object/integer_spec.rb
220
- - spec/code/object/list_spec.rb
221
- - spec/code/object/nothing_spec.rb
222
- - spec/code/object/range_spec.rb
223
- - spec/code/parser/boolean_spec.rb
224
- - spec/code/parser/chained_call.rb
225
- - spec/code/parser/dictionary_spec.rb
226
- - spec/code/parser/function_spec.rb
227
- - spec/code/parser/group_spec.rb
228
- - spec/code/parser/if_modifier_spec.rb
229
- - spec/code/parser/list_spec.rb
230
- - spec/code/parser/number_spec.rb
231
- - spec/code/parser/string_spec.rb
232
- - spec/code/parser_spec.rb
233
- - spec/code/type_spec.rb
234
- - spec/code_spec.rb
235
- - spec/spec_helper.rb
213
+ test_files: []