template-ruby 0.5.6 → 0.6.0

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 (184) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -4
  3. data/Gemfile.lock +15 -22
  4. data/lib/template/version.rb +1 -1
  5. data/lib/template-ruby.rb +2 -3
  6. data/lib/template.rb +18 -22
  7. data/spec/spec_helper.rb +0 -5
  8. data/spec/template_spec.rb +13 -0
  9. data/template-ruby.gemspec +2 -1
  10. metadata +34 -222
  11. data/.cherry.js +0 -21
  12. data/.editorconfig +0 -9
  13. data/.github/workflows/rspec.yml +0 -14
  14. data/.gitignore +0 -2
  15. data/.prettierrc +0 -3
  16. data/.tool-versions +0 -1
  17. data/CHANGELOG.md +0 -55
  18. data/LICENSE +0 -7
  19. data/README.md +0 -103
  20. data/TODO +0 -17
  21. data/bin/code +0 -76
  22. data/bin/format +0 -3
  23. data/bin/publish +0 -19
  24. data/bin/template +0 -85
  25. data/bin/test +0 -17
  26. data/code-ruby.gemspec +0 -17
  27. data/docs/class.code +0 -9
  28. data/docs/euler/1.template +0 -10
  29. data/docs/euler/2.template +0 -16
  30. data/docs/euler/3.template +0 -16
  31. data/docs/euler/4.template +0 -10
  32. data/docs/euler/5.template +0 -13
  33. data/docs/fibonnaci.template +0 -14
  34. data/docs/meetup.code +0 -12
  35. data/docs/precedence.template +0 -36
  36. data/docs/rain.code +0 -22
  37. data/docs/slack.code +0 -17
  38. data/docs/stripe.code +0 -7
  39. data/docs/twitter.code +0 -9
  40. data/language-ruby.gemspec +0 -17
  41. data/lib/code/error.rb +0 -18
  42. data/lib/code/node/base_10.rb +0 -29
  43. data/lib/code/node/base_16.rb +0 -13
  44. data/lib/code/node/base_2.rb +0 -13
  45. data/lib/code/node/base_8.rb +0 -13
  46. data/lib/code/node/boolean.rb +0 -22
  47. data/lib/code/node/call.rb +0 -47
  48. data/lib/code/node/call_argument.rb +0 -21
  49. data/lib/code/node/chained_call.rb +0 -23
  50. data/lib/code/node/code.rb +0 -20
  51. data/lib/code/node/decimal.rb +0 -26
  52. data/lib/code/node/dictionnary.rb +0 -33
  53. data/lib/code/node/equal.rb +0 -34
  54. data/lib/code/node/function.rb +0 -20
  55. data/lib/code/node/function_parameter.rb +0 -31
  56. data/lib/code/node/if.rb +0 -59
  57. data/lib/code/node/if_modifier.rb +0 -47
  58. data/lib/code/node/list.rb +0 -16
  59. data/lib/code/node/negation.rb +0 -15
  60. data/lib/code/node/not.rb +0 -15
  61. data/lib/code/node/nothing.rb +0 -12
  62. data/lib/code/node/number.rb +0 -25
  63. data/lib/code/node/operation.rb +0 -38
  64. data/lib/code/node/power.rb +0 -20
  65. data/lib/code/node/rescue.rb +0 -17
  66. data/lib/code/node/splat.rb +0 -15
  67. data/lib/code/node/statement.rb +0 -59
  68. data/lib/code/node/string.rb +0 -53
  69. data/lib/code/node/ternary.rb +0 -24
  70. data/lib/code/node/unary_minus.rb +0 -15
  71. data/lib/code/node/while.rb +0 -35
  72. data/lib/code/node.rb +0 -13
  73. data/lib/code/object/argument.rb +0 -32
  74. data/lib/code/object/boolean.rb +0 -27
  75. data/lib/code/object/decimal.rb +0 -162
  76. data/lib/code/object/dictionnary.rb +0 -96
  77. data/lib/code/object/function.rb +0 -64
  78. data/lib/code/object/global.rb +0 -42
  79. data/lib/code/object/integer.rb +0 -221
  80. data/lib/code/object/list.rb +0 -207
  81. data/lib/code/object/nothing.rb +0 -23
  82. data/lib/code/object/number.rb +0 -6
  83. data/lib/code/object/range.rb +0 -146
  84. data/lib/code/object/ruby_function.rb +0 -31
  85. data/lib/code/object/string.rb +0 -102
  86. data/lib/code/object.rb +0 -197
  87. data/lib/code/parser/addition.rb +0 -21
  88. data/lib/code/parser/and_operator.rb +0 -17
  89. data/lib/code/parser/bitwise_and.rb +0 -17
  90. data/lib/code/parser/bitwise_or.rb +0 -21
  91. data/lib/code/parser/boolean.rb +0 -17
  92. data/lib/code/parser/call.rb +0 -122
  93. data/lib/code/parser/chained_call.rb +0 -47
  94. data/lib/code/parser/class.rb +0 -45
  95. data/lib/code/parser/code.rb +0 -25
  96. data/lib/code/parser/dictionnary.rb +0 -67
  97. data/lib/code/parser/equal.rb +0 -94
  98. data/lib/code/parser/equality.rb +0 -35
  99. data/lib/code/parser/equality_lower.rb +0 -9
  100. data/lib/code/parser/function.rb +0 -85
  101. data/lib/code/parser/greater.rb +0 -25
  102. data/lib/code/parser/group.rb +0 -22
  103. data/lib/code/parser/if.rb +0 -63
  104. data/lib/code/parser/if_modifier.rb +0 -55
  105. data/lib/code/parser/list.rb +0 -42
  106. data/lib/code/parser/multiplication.rb +0 -25
  107. data/lib/code/parser/name.rb +0 -107
  108. data/lib/code/parser/negation.rb +0 -30
  109. data/lib/code/parser/not_keyword.rb +0 -23
  110. data/lib/code/parser/nothing.rb +0 -22
  111. data/lib/code/parser/number.rb +0 -154
  112. data/lib/code/parser/operation.rb +0 -35
  113. data/lib/code/parser/or_keyword.rb +0 -21
  114. data/lib/code/parser/or_operator.rb +0 -17
  115. data/lib/code/parser/power.rb +0 -43
  116. data/lib/code/parser/range.rb +0 -17
  117. data/lib/code/parser/rescue.rb +0 -39
  118. data/lib/code/parser/shift.rb +0 -21
  119. data/lib/code/parser/splat.rb +0 -31
  120. data/lib/code/parser/statement.rb +0 -9
  121. data/lib/code/parser/string.rb +0 -78
  122. data/lib/code/parser/ternary.rb +0 -46
  123. data/lib/code/parser/unary_minus.rb +0 -31
  124. data/lib/code/parser/while.rb +0 -36
  125. data/lib/code/parser/whitespace.rb +0 -49
  126. data/lib/code/parser.rb +0 -19
  127. data/lib/code/ruby.rb +0 -174
  128. data/lib/code-ruby.rb +0 -10
  129. data/lib/code.rb +0 -47
  130. data/lib/language/atom.rb +0 -342
  131. data/lib/language/output.rb +0 -130
  132. data/lib/language/parser/absent/present.rb +0 -8
  133. data/lib/language/parser/absent.rb +0 -6
  134. data/lib/language/parser/end_of_input.rb +0 -6
  135. data/lib/language/parser/interuption.rb +0 -38
  136. data/lib/language/parser/not_end_of_input.rb +0 -6
  137. data/lib/language/parser/str/not_found.rb +0 -16
  138. data/lib/language/parser/str.rb +0 -6
  139. data/lib/language/parser.rb +0 -53
  140. data/lib/language-ruby.rb +0 -10
  141. data/lib/language.rb +0 -80
  142. data/spec/code/addition_spec.rb +0 -13
  143. data/spec/code/and_operator_spec.rb +0 -13
  144. data/spec/code/bitwise_and_spec.rb +0 -13
  145. data/spec/code/bitwise_or_spec.rb +0 -13
  146. data/spec/code/boolean_spec.rb +0 -13
  147. data/spec/code/call_spec.rb +0 -21
  148. data/spec/code/chained_call_spec.rb +0 -16
  149. data/spec/code/code_spec.rb +0 -29
  150. data/spec/code/dictionnary_spec.rb +0 -17
  151. data/spec/code/equal_spec.rb +0 -26
  152. data/spec/code/equality_spec.rb +0 -13
  153. data/spec/code/function_spec.rb +0 -18
  154. data/spec/code/greater_spec.rb +0 -18
  155. data/spec/code/group_spec.rb +0 -12
  156. data/spec/code/if_modifier_spec.rb +0 -20
  157. data/spec/code/if_spec.rb +0 -25
  158. data/spec/code/list_spec.rb +0 -19
  159. data/spec/code/multiplication_spec.rb +0 -18
  160. data/spec/code/negation_spec.rb +0 -20
  161. data/spec/code/not_keyword_spec.rb +0 -13
  162. data/spec/code/nothing_spec.rb +0 -17
  163. data/spec/code/number_spec.rb +0 -22
  164. data/spec/code/or_keyword_spec.rb +0 -17
  165. data/spec/code/or_operator_spec.rb +0 -16
  166. data/spec/code/parser/boolean_spec.rb +0 -16
  167. data/spec/code/parser/call_spec.rb +0 -26
  168. data/spec/code/parser/chained_call.rb +0 -17
  169. data/spec/code/parser/dictionnary_spec.rb +0 -18
  170. data/spec/code/parser/function_spec.rb +0 -16
  171. data/spec/code/parser/group_spec.rb +0 -18
  172. data/spec/code/parser/list_spec.rb +0 -18
  173. data/spec/code/parser/number_spec.rb +0 -12
  174. data/spec/code/parser/string_spec.rb +0 -21
  175. data/spec/code/parser_spec.rb +0 -23
  176. data/spec/code/power_spec.rb +0 -13
  177. data/spec/code/range_spec.rb +0 -16
  178. data/spec/code/rescue_spec.rb +0 -13
  179. data/spec/code/shift_spec.rb +0 -13
  180. data/spec/code/splat_spec.rb +0 -13
  181. data/spec/code/string_spec.rb +0 -27
  182. data/spec/code/ternary_spec.rb +0 -18
  183. data/spec/code/unary_minus_spec.rb +0 -13
  184. data/spec/code/while_spec.rb +0 -18
@@ -1,16 +0,0 @@
1
- require "spec_helper"
2
-
3
- RSpec.describe Code::Parser::Boolean do
4
- subject { Code::Parser.parse(input) }
5
-
6
- [
7
- ["true", [{ boolean: "true" }]],
8
- ["false", [{ boolean: "false" }]]
9
- ].each do |input, output|
10
- context input.inspect do
11
- let(:input) { input }
12
-
13
- it { expect(subject).to eq(output) }
14
- end
15
- end
16
- end
@@ -1,26 +0,0 @@
1
- require "spec_helper"
2
-
3
- RSpec.describe Code::Parser::Call do
4
- subject { Code::Parser.parse(input) }
5
-
6
- [
7
- "a",
8
- "hello",
9
- "hello()",
10
- "render(user)",
11
- 'render(user, first_name: "Dorian")',
12
- "render { }",
13
- "render do end",
14
- "render { |name| name.upcase }",
15
- "render(user) { |name| name.upcase }",
16
- "render(user) do |name| name.upcase end",
17
- 'render { "Dorian" }',
18
- 'render(user) { "Dorian" }',
19
- 'render(user) do "Dorian" end'
20
- ].each do |input|
21
- context input do
22
- let(:input) { input }
23
- it { subject }
24
- end
25
- end
26
- end
@@ -1,17 +0,0 @@
1
- require "spec_helper"
2
-
3
- RSpec.describe Code::Parser::ChainedCall do
4
- subject { Code::Parser.parse(input) }
5
-
6
- [
7
- "a.b",
8
- "user.first_name",
9
- "user.admin?",
10
- 'user.update!(name: "Dorian")'
11
- ].each do |input|
12
- context input do
13
- let(:input) { input }
14
- it { subject }
15
- end
16
- end
17
- end
@@ -1,18 +0,0 @@
1
- require "spec_helper"
2
-
3
- RSpec.describe Code::Parser::Dictionnary do
4
- subject { Code::Parser.parse(input) }
5
-
6
- [
7
- "{}",
8
- "{ }",
9
- "{/* comment */}",
10
- "{ a: 1, b: 2, c: 3 }",
11
- '{ "first_name": "Dorian" }'
12
- ].each do |input|
13
- context input do
14
- let(:input) { input }
15
- it { subject }
16
- end
17
- end
18
- end
@@ -1,16 +0,0 @@
1
- require "spec_helper"
2
-
3
- RSpec.describe Code::Parser::Function do
4
- subject { Code::Parser.parse(input) }
5
-
6
- [
7
- "() => {}",
8
- "(a, b) => { add(a, b) }",
9
- "(a:, b:) => { add(a, b) }"
10
- ].each do |input|
11
- context input do
12
- let(:input) { input }
13
- it { subject }
14
- end
15
- end
16
- end
@@ -1,18 +0,0 @@
1
- require "spec_helper"
2
-
3
- RSpec.describe Code::Parser::Group do
4
- subject { Code::Parser.parse(input) }
5
-
6
- [
7
- [
8
- "(true (nothing))",
9
- [{ group: [{ boolean: "true" }, { group: [{ nothing: "nothing" }] }] }]
10
- ]
11
- ].each do |input, output|
12
- context input.inspect do
13
- let(:input) { input }
14
-
15
- it { expect(subject).to eq(output) }
16
- end
17
- end
18
- end
@@ -1,18 +0,0 @@
1
- require "spec_helper"
2
-
3
- RSpec.describe Code::Parser::List do
4
- subject { Code::Parser.parse(input) }
5
-
6
- [
7
- "[]",
8
- "[ ]",
9
- "[/* comment */]",
10
- "[1, 2, 3]",
11
- "['hello', 1, true, [false, nothing]]"
12
- ].each do |input|
13
- context input do
14
- let(:input) { input }
15
- it { subject }
16
- end
17
- end
18
- end
@@ -1,12 +0,0 @@
1
- require "spec_helper"
2
-
3
- RSpec.describe Code::Parser::Number do
4
- subject { Code::Parser.parse(input) }
5
-
6
- %w[0 1 1.1 123.123 1_000.12_244 0xf0 0o70 0b10].each do |input|
7
- context input do
8
- let(:input) { input }
9
- it { subject }
10
- end
11
- end
12
- end
@@ -1,21 +0,0 @@
1
- require "spec_helper"
2
-
3
- RSpec.describe Code::Parser::String do
4
- subject { Code::Parser.parse(input) }
5
-
6
- [
7
- "''",
8
- '""',
9
- "'Hello Dorian'",
10
- '"Hello Dorian"',
11
- "'Hello \\{name}'",
12
- '"Hello \\{name}"',
13
- "'Hello {name}'",
14
- '"Hello {name}"'
15
- ].each do |input|
16
- context input do
17
- let(:input) { input }
18
- it { subject }
19
- end
20
- end
21
- end
@@ -1,23 +0,0 @@
1
- require "spec_helper"
2
-
3
- RSpec.describe "Code::Parser" do
4
- subject { Code::Parser.parse(input) }
5
-
6
- [
7
- ["", []],
8
- [" ", []],
9
- ["\n", []],
10
- ["nothing", [{ nothing: "nothing" }]],
11
- [" nothing ", [{ nothing: "nothing" }]],
12
- [
13
- "nothing null nil",
14
- [{ nothing: "nothing" }, { nothing: "null" }, { nothing: "nil" }]
15
- ]
16
- ].each do |input, output|
17
- context input.inspect do
18
- let(:input) { input }
19
-
20
- it { expect(subject).to eq(output) }
21
- end
22
- end
23
- end
@@ -1,13 +0,0 @@
1
- require "spec_helper"
2
-
3
- RSpec.describe "function" do
4
- let(:timeout) { 0 }
5
- subject { Code.evaluate(input, timeout: timeout).to_s }
6
-
7
- [["2 ** 3", "8"], ["2 ** 3 ** 2", "512"]].each do |input, output|
8
- context input do
9
- let(:input) { input }
10
- it { expect(subject).to eq(output) }
11
- end
12
- end
13
- end
@@ -1,16 +0,0 @@
1
- require "spec_helper"
2
-
3
- RSpec.describe "range" do
4
- let(:timeout) { 0 }
5
- subject { Code.evaluate(input, timeout: timeout).to_s }
6
-
7
- [
8
- ["(0..1).to_list", "[0, 1]"],
9
- ["(0...1).to_list", "[0]"]
10
- ].each do |input, output|
11
- context input do
12
- let(:input) { input }
13
- it { expect(subject).to eq(output) }
14
- end
15
- end
16
- end
@@ -1,13 +0,0 @@
1
- require "spec_helper"
2
-
3
- RSpec.describe "rescue" do
4
- let(:timeout) { 0 }
5
- subject { Code.evaluate(input, timeout: timeout).to_s }
6
-
7
- [["a rescue 'oops'", "oops"]].each do |input, output|
8
- context input do
9
- let(:input) { input }
10
- it { expect(subject).to eq(output) }
11
- end
12
- end
13
- end
@@ -1,13 +0,0 @@
1
- require "spec_helper"
2
-
3
- RSpec.describe "shift" do
4
- let(:timeout) { 0 }
5
- subject { Code.evaluate(input, timeout: timeout).to_s }
6
-
7
- [["1 >> 1", "0"], ["1 << 1", "2"]].each do |input, output|
8
- context input do
9
- let(:input) { input }
10
- it { expect(subject).to eq(output) }
11
- end
12
- end
13
- end
@@ -1,13 +0,0 @@
1
- require "spec_helper"
2
-
3
- RSpec.describe "string" do
4
- let(:timeout) { 0 }
5
- subject { Code.evaluate(input, timeout: timeout).to_s }
6
-
7
- [["[1, 2].map(&:to_string)", '["1", "2"]']].each do |input, output|
8
- context input do
9
- let(:input) { input }
10
- it { expect(subject).to eq(output) }
11
- end
12
- end
13
- end
@@ -1,27 +0,0 @@
1
- require "spec_helper"
2
-
3
- RSpec.describe "string" do
4
- let(:timeout) { 0 }
5
- subject { Code.evaluate(input, timeout: timeout).to_s }
6
-
7
- [
8
- ["''", ""],
9
- ['""', ""],
10
- %w[:hello hello],
11
- %w[:admin? admin?],
12
- %w[:update! update!],
13
- ["'Hello Dorian'", "Hello Dorian"],
14
- ['"Hello Dorian"', "Hello Dorian"],
15
- ["'Hello \\{name}'", "Hello {name}"],
16
- ['"Hello \\{name}"', "Hello {name}"],
17
- ["'Hello {1}'", "Hello 1"],
18
- ['"Hello {1}"', "Hello 1"],
19
- ['"Hello".include?("H")', "true"],
20
- ['"Hello".downcase', "hello"]
21
- ].each do |input, output|
22
- context input do
23
- let(:input) { input }
24
- it { expect(subject).to eq(output) }
25
- end
26
- end
27
- end
@@ -1,18 +0,0 @@
1
- require "spec_helper"
2
-
3
- RSpec.describe "ternary" do
4
- let(:timeout) { 0 }
5
- subject { Code.evaluate(input, timeout: timeout).to_s }
6
-
7
- [
8
- ["true ? 1", "1"],
9
- ["false ? 1", ""],
10
- ["true ? 1 : 2", "1"],
11
- ["false ? 1 : 2", "2"]
12
- ].each do |input, output|
13
- context input do
14
- let(:input) { input }
15
- it { expect(subject).to eq(output) }
16
- end
17
- end
18
- end
@@ -1,13 +0,0 @@
1
- require "spec_helper"
2
-
3
- RSpec.describe "function" do
4
- let(:timeout) { 0 }
5
- subject { Code.evaluate(input, timeout: timeout).to_s }
6
-
7
- [%w[-1 -1], %w[--1 1], %w[-1.0 -1.0], %w[--1.0 1.0]].each do |input, output|
8
- context input do
9
- let(:input) { input }
10
- it { expect(subject).to eq(output) }
11
- end
12
- end
13
- end
@@ -1,18 +0,0 @@
1
- require "spec_helper"
2
-
3
- RSpec.describe "while" do
4
- let(:timeout) { 0 }
5
- subject { Code.evaluate(input, timeout: timeout).to_s }
6
-
7
- [
8
- ["while false", ""],
9
- ["a = 0\nwhile a < 10 a += 1 end a", "10"],
10
- ["until true", ""],
11
- ["a = 0\nuntil a > 10 a += 1 end a", "11"]
12
- ].each do |input, output|
13
- context input do
14
- let(:input) { input }
15
- it { expect(subject).to eq(output) }
16
- end
17
- end
18
- end