masamune-ast 1.1.2 → 1.1.3

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: 0cafe74abe55158e29178163ef544558f8e8d042d8adae0668a8625e1883c843
4
- data.tar.gz: f0068f9e6783403ba0d17f65902c0ecfded0806424383c8d325168ce0b4c7a58
3
+ metadata.gz: ccb2d3e2f9229836db093e7d6e164a30a37302610835973bcba1bf63781d4869
4
+ data.tar.gz: afeba57c0b354caa8bb753c4dffdafc1aeca92b96997ec0345bd309c3c0cc33a
5
5
  SHA512:
6
- metadata.gz: b6647c5ea9745d2e1f842a0d0eea3de05e795c7afa9a3241cf9d6a87dd802c4c62e7c9fdb266afcbc8e54ffe51af25d9bacc32830d4f28009f9c34b2a4f733a8
7
- data.tar.gz: d7781f44d57a0bca23d7a61eaed10cdb687431a66540433ac0e01f43c6a625cd05aea2cd06168b1ea980d2fffaa827634ba3633ca8a94950df2110a60d4f9f5c
6
+ metadata.gz: 63c3961e42d7ae3264eac44d6d7c6b43f572f95daa2d4c56077eace0baf2fb1a7259f6f149ce0ab0dc11a00d463f463ae246ba1a563e5a4ef83405e3d5910641
7
+ data.tar.gz: c130f31c0d73a54af8775f538c928ae71d55a456b8f2d715b690ef9cf2b1de906fd808e47d3ad668630817d038d255feefd2cc309c221e5b4de5e693bc844f5c
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- masamune-ast (1.1.2)
4
+ masamune-ast (1.1.3)
5
5
  activesupport
6
6
 
7
7
  GEM
@@ -11,7 +11,7 @@ module Masamune
11
11
 
12
12
  # :block_var has a lot of nil values within in.
13
13
  # I'm not sure what this represents, but it would be
14
- # nice to find out and implement it document/implement it somewhere.
14
+ # nice to find out and document/implement it somewhere.
15
15
  def extract_data_nodes
16
16
  @contents[1][1].map do |content|
17
17
  DataNode.new(content, @ast_id)
@@ -0,0 +1,20 @@
1
+ # TODO: Add description.
2
+
3
+ module Masamune
4
+ class AbstractSyntaxTree
5
+ class DynaSymbol < Node
6
+ def initialize(contents, ast_id)
7
+ super
8
+ end
9
+
10
+ # Dyna Symbols are symbols created from strings, i.e. - :"project".
11
+ # Since they have :@tstring_content inside of them, the data node
12
+ # is technically for a String, so instead of duplicating it here,
13
+ # we just use a method specifically for getting the symbol.
14
+ # This should be the same as the :symbol_literal type.
15
+ def get_symbol_data
16
+ DataNode.new(@contents[1][1], @ast_id)
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,17 @@
1
+ # TODO: Add description.
2
+
3
+ module Masamune
4
+ class AbstractSyntaxTree
5
+ class Symbol < Node
6
+ def initialize(contents, ast_id)
7
+ super
8
+ end
9
+
10
+ def extract_data_nodes
11
+ [
12
+ DataNode.new(@contents[1], @ast_id)
13
+ ]
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,21 @@
1
+ # TODO: Add description.
2
+
3
+ module Masamune
4
+ class AbstractSyntaxTree
5
+ class SymbolLiteral < Node
6
+ def initialize(contents, ast_id)
7
+ super
8
+ end
9
+
10
+ # Symbol Literals are a node type of :symbol_literal,
11
+ # but have a node type of :symbol nested within them.
12
+ # For the reason, the data node is technically for :symbol
13
+ # and not :symbol_literal, so instead of duplicating it here,
14
+ # we just use a method specifically for getting the symbol.
15
+ # This should be the same as the :dyna_symbol type.
16
+ def get_symbol_data
17
+ DataNode.new(@contents[1][1], @ast_id)
18
+ end
19
+ end
20
+ end
21
+ end
@@ -70,6 +70,18 @@ module Masamune
70
70
  def brace_block_params
71
71
  end
72
72
 
73
+ def symbols(content: nil)
74
+ symbol_literals + string_symbols
75
+ end
76
+
77
+ def symbol_literals(content: nil)
78
+ find_nodes(get_node_class(:symbol_literal), token: content)
79
+ end
80
+
81
+ def string_symbols(content: nil)
82
+ find_nodes(get_node_class(:dyna_symbol), token: content)
83
+ end
84
+
73
85
  # @tree only shows comments as a type of `:void_stmt` and
74
86
  # doesn't have a data node, so we get comments from @lex_nodes.
75
87
  def comments(content: nil)
@@ -109,7 +121,13 @@ module Masamune
109
121
 
110
122
  final_result = []
111
123
  nodes.each do |node|
112
- node.data_nodes.each {|dn| final_result << dn.position_and_token} if node.data_nodes
124
+ # Data for symbols are housed within a nested node, so we handle those differently here.
125
+ # Read the comments for `get_symbol_data` in the symbol node classes for details.
126
+ if node.class == Masamune::AbstractSyntaxTree::SymbolLiteral || node.class == Masamune::AbstractSyntaxTree::DynaSymbol
127
+ final_result << node.get_symbol_data.position_and_token
128
+ else
129
+ node.data_nodes.each {|dn| final_result << dn.position_and_token} if node.data_nodes
130
+ end
113
131
  end
114
132
 
115
133
  DataNode.order_results_by_position(final_result)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Masamune
4
- VERSION = "1.1.2"
4
+ VERSION = "1.1.3"
5
5
  end
data/lib/masamune.rb CHANGED
@@ -16,9 +16,12 @@ require "masamune/abstract_syntax_tree/brace_block"
16
16
  require "masamune/abstract_syntax_tree/call"
17
17
  require "masamune/abstract_syntax_tree/def"
18
18
  require "masamune/abstract_syntax_tree/do_block"
19
+ require "masamune/abstract_syntax_tree/dyna_symbol"
19
20
  require "masamune/abstract_syntax_tree/params"
20
21
  require "masamune/abstract_syntax_tree/program"
21
22
  require "masamune/abstract_syntax_tree/string_content"
23
+ require "masamune/abstract_syntax_tree/symbol_literal"
24
+ require "masamune/abstract_syntax_tree/symbol"
22
25
  require "masamune/abstract_syntax_tree/var_field"
23
26
  require "masamune/abstract_syntax_tree/var_ref"
24
27
  require "masamune/abstract_syntax_tree/vcall"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: masamune-ast
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.2
4
+ version: 1.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gabriel Zayas
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-06-03 00:00:00.000000000 Z
11
+ date: 2023-06-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -47,10 +47,13 @@ files:
47
47
  - lib/masamune/abstract_syntax_tree/data_node.rb
48
48
  - lib/masamune/abstract_syntax_tree/def.rb
49
49
  - lib/masamune/abstract_syntax_tree/do_block.rb
50
+ - lib/masamune/abstract_syntax_tree/dyna_symbol.rb
50
51
  - lib/masamune/abstract_syntax_tree/node.rb
51
52
  - lib/masamune/abstract_syntax_tree/params.rb
52
53
  - lib/masamune/abstract_syntax_tree/program.rb
53
54
  - lib/masamune/abstract_syntax_tree/string_content.rb
55
+ - lib/masamune/abstract_syntax_tree/symbol.rb
56
+ - lib/masamune/abstract_syntax_tree/symbol_literal.rb
54
57
  - lib/masamune/abstract_syntax_tree/var_field.rb
55
58
  - lib/masamune/abstract_syntax_tree/var_ref.rb
56
59
  - lib/masamune/abstract_syntax_tree/vcall.rb