dtr_core 0.8.0 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cfbb64221cf4951c057d70eebcfb02cfb6c26930db47e47e8b56b2d02619631b
4
- data.tar.gz: 99df8b3da4826433ceddb12930209c8bc0d55b91db84086a4485d13324a6c60f
3
+ metadata.gz: b6eb9933172ea48536b0efceffe9e9e222a54e37f214b8041dc5edd40c01f2d6
4
+ data.tar.gz: 731d58a093c47bfd2b63f4ea884d4422d703b2c2ba47baacbda105bfb02e2264
5
5
  SHA512:
6
- metadata.gz: e158a6bdc13ea1ccd1923828b4c073c88412e7b515950c4a77bcf96d851bb0ea217c31fc68161b5a2d04cbbad49b19c76b1e7888294792eb01e1d84a1c0db7ed
7
- data.tar.gz: 64e797566826df76b489829408a3865de303e50481558844c0d51b718ae80d93ac6fb162393249d81a317b60a4963ed78c7f2b3d80cd57c1825df0890b48806c
6
+ metadata.gz: '04824f70c5646161afb24637f614f1ba2431414cc5f98b8847b15f74299ba563957586ba40a88d36847d1cfce649462199a42508a0d276397dbe3f38d1ee7e59'
7
+ data.tar.gz: 106a92f8de4ca9385d44f510dbb942b05d073bd2584d7dabbfe7d3003d348a121c21765da246e2c450a25df92cfb5151d1b541cf5b28029d96acd6ff1875c423
@@ -3,28 +3,29 @@
3
3
  module DTRCore
4
4
  # Represents a contract in a DTR file.
5
5
  class Contract
6
- attr_reader :helpers, :interface, :name, :state, :user_defined_types
6
+ attr_reader :helpers, :interface, :name, :state, :user_defined_types, :non_translatables
7
7
 
8
- def initialize(name, state, interface, user_defined_types, helpers)
8
+ def initialize(name, state, interface, user_defined_types, helpers, non_translatables)
9
9
  @name = name
10
10
  @state = state
11
11
  @interface = interface
12
12
  @user_defined_types = user_defined_types
13
13
  @helpers = helpers
14
+ @non_translatables = non_translatables
14
15
  end
15
16
 
16
17
  def self.from_dtr(filepath)
17
18
  parser = DTRCore::Parser.new(filepath)
18
19
 
19
20
  new(parser.name_section, parser.state_section, parser.interface_section, parser.user_defined_types_section,
20
- parser.helpers_section)
21
+ parser.helpers_section, parser.non_translatable_section)
21
22
  end
22
23
 
23
24
  def self.from_dtr_raw(content)
24
25
  parser = DTRCore::Parser.new('', content:)
25
26
 
26
27
  new(parser.name_section, parser.state_section, parser.interface_section, parser.user_defined_types_section,
27
- parser.helpers_section)
28
+ parser.helpers_section, parser.non_translatable_section)
28
29
  end
29
30
 
30
31
  def ==(other)
@@ -42,6 +43,7 @@ module DTRCore
42
43
  return_string += interface_to_s
43
44
  return_string += user_defined_types_to_s
44
45
  return_string += helpers_to_s
46
+ return_string += non_translatables_to_s
45
47
 
46
48
  return_string
47
49
  end
@@ -75,5 +77,11 @@ module DTRCore
75
77
 
76
78
  "[Helpers]:\n#{@helpers&.map(&:to_s)&.join("\n")}\n:[Helpers]\n"
77
79
  end
80
+
81
+ def non_translatables_to_s
82
+ return '' if @non_translatables.nil?
83
+
84
+ "[NonTranslatable]:\n#{@non_translatables}\n:[NonTranslatable]"
85
+ end
78
86
  end
79
87
  end
@@ -97,7 +97,7 @@ module DTRCore
97
97
  instruction = DTRCore::Instruction.new(
98
98
  instruction[/instruction:\s*(?<all>[^\s,]+)/, 1],
99
99
  parse_function_instruction_input(instruction),
100
- instruction[/\s*assign:\s*(?<all>[^\s\,]+)/, 1],
100
+ instruction[/\s*assign:\s*\[?(?<all>[^\s\,\]]+)\]?/, 1],
101
101
  instruction[/\s*scope:\s*(?<all>[^\s\,]+)/, 1].to_i || 0
102
102
  )
103
103
 
@@ -41,8 +41,6 @@ module DTRCore
41
41
  .split(/\n\s*\*\s*\[/).map { |x| "[#{x.strip}" }
42
42
  .map { |definition| DTRCore::State.from_definition(definition) }
43
43
 
44
- raise 'Empty state section.' if state_definitions.empty?
45
-
46
44
  @state_section ||= state_definitions
47
45
  end
48
46
 
@@ -59,8 +57,6 @@ module DTRCore
59
57
 
60
58
  function_definitions.reject! { |x| x.name.nil? }
61
59
 
62
- raise 'Empty interface section.' if function_definitions.empty?
63
-
64
60
  @interface_section ||= function_definitions
65
61
  end
66
62
 
@@ -81,7 +77,7 @@ module DTRCore
81
77
  end
82
78
 
83
79
  def helpers_section
84
- return @function_definitions if @function_definitions
80
+ return @helpers_section if @helpers_section
85
81
 
86
82
  helpers_section = capture_section(/\[Helpers\]:(?<all>.*)\s*:\[Helpers\]/m)
87
83
 
@@ -93,9 +89,17 @@ module DTRCore
93
89
 
94
90
  function_definitions.reject! { |x| x.name.nil? }
95
91
 
96
- raise 'Empty helpers section.' if function_definitions.empty?
97
-
98
92
  @helpers_section ||= function_definitions
99
93
  end
94
+
95
+ def non_translatable_section
96
+ return @non_translatable_section if @non_translatable_section
97
+
98
+ non_translatable_section = capture_section(/\[NonTranslatable\]:(?<all>.*)\s*:\[NonTranslatable\]/m)
99
+
100
+ return nil if non_translatable_section.nil?
101
+
102
+ @non_translatable_section = non_translatable_section
103
+ end
100
104
  end
101
105
  end
@@ -33,7 +33,7 @@ module DTRCore
33
33
  next { name: splitted[0].strip, type: splitted[1].strip } if splitted.length > 1
34
34
 
35
35
  splitted = x.split('=')
36
- next { name: splitted[0].strip, value: splitted[1].strip } if splitted.length > 1
36
+ next { name: splitted[0].strip, type: splitted[1].strip } if splitted.length > 1
37
37
 
38
38
  nil
39
39
  end&.compact
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dtr_core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rob Durst
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-06-23 00:00:00.000000000 Z
11
+ date: 2024-07-07 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Core smart contract intermediate language (Digicus Textual Representation)
14
14
  parser.