herb 0.9.2 → 0.9.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 +4 -4
- data/README.md +2 -0
- data/config.yml +125 -0
- data/ext/herb/error_helpers.c +172 -2
- data/ext/herb/extconf.rb +6 -0
- data/ext/herb/extension.c +16 -2
- data/ext/herb/extension_helpers.c +6 -5
- data/ext/herb/extension_helpers.h +4 -4
- data/ext/herb/nodes.c +89 -3
- data/lib/herb/ast/erb_content_node.rb +32 -0
- data/lib/herb/ast/nodes.rb +244 -3
- data/lib/herb/cli.rb +12 -2
- data/lib/herb/engine/compiler.rb +122 -59
- data/lib/herb/engine/validators/security_validator.rb +40 -0
- data/lib/herb/errors.rb +268 -0
- data/lib/herb/parser_options.rb +7 -2
- data/lib/herb/version.rb +1 -1
- data/lib/herb/visitor.rb +82 -0
- data/lib/herb.rb +1 -0
- data/sig/herb/ast/erb_content_node.rbs +13 -0
- data/sig/herb/ast/nodes.rbs +98 -2
- data/sig/herb/engine/compiler.rbs +15 -2
- data/sig/herb/engine/validators/security_validator.rbs +4 -0
- data/sig/herb/errors.rbs +122 -0
- data/sig/herb/parser_options.rbs +6 -2
- data/sig/herb/visitor.rbs +12 -0
- data/sig/serialized_ast_errors.rbs +29 -0
- data/sig/serialized_ast_nodes.rbs +19 -0
- data/src/analyze/action_view/attribute_extraction_helpers.c +420 -91
- data/src/analyze/action_view/image_tag.c +87 -0
- data/src/analyze/action_view/javascript_include_tag.c +22 -12
- data/src/analyze/action_view/registry.c +6 -3
- data/src/analyze/action_view/tag.c +19 -2
- data/src/analyze/action_view/tag_helper_node_builders.c +105 -36
- data/src/analyze/action_view/tag_helpers.c +792 -44
- data/src/analyze/analyze.c +165 -10
- data/src/analyze/{helpers.c → analyze_helpers.c} +1 -1
- data/src/analyze/analyzed_ruby.c +1 -1
- data/src/analyze/builders.c +11 -8
- data/src/analyze/conditional_elements.c +6 -7
- data/src/analyze/conditional_open_tags.c +6 -7
- data/src/analyze/control_type.c +4 -2
- data/src/analyze/invalid_structures.c +5 -5
- data/src/analyze/missing_end.c +2 -2
- data/src/analyze/parse_errors.c +5 -5
- data/src/analyze/prism_annotate.c +7 -7
- data/src/analyze/render_nodes.c +6 -26
- data/src/analyze/strict_locals.c +637 -0
- data/src/analyze/transform.c +7 -0
- data/src/{ast_node.c → ast/ast_node.c} +8 -8
- data/src/{ast_nodes.c → ast/ast_nodes.c} +82 -11
- data/src/{ast_pretty_print.c → ast/ast_pretty_print.c} +113 -9
- data/src/{pretty_print.c → ast/pretty_print.c} +9 -9
- data/src/errors.c +398 -8
- data/src/extract.c +5 -5
- data/src/herb.c +15 -5
- data/src/include/analyze/action_view/attribute_extraction_helpers.h +3 -1
- data/src/include/analyze/action_view/tag_helper_handler.h +3 -3
- data/src/include/analyze/action_view/tag_helper_node_builders.h +34 -5
- data/src/include/analyze/action_view/tag_helpers.h +4 -3
- data/src/include/analyze/analyze.h +6 -4
- data/src/include/analyze/analyzed_ruby.h +2 -2
- data/src/include/analyze/builders.h +4 -4
- data/src/include/analyze/conditional_elements.h +2 -2
- data/src/include/analyze/conditional_open_tags.h +2 -2
- data/src/include/analyze/control_type.h +1 -1
- data/src/include/analyze/helpers.h +2 -2
- data/src/include/analyze/invalid_structures.h +1 -1
- data/src/include/analyze/prism_annotate.h +2 -2
- data/src/include/analyze/render_nodes.h +1 -1
- data/src/include/analyze/strict_locals.h +11 -0
- data/src/include/{ast_node.h → ast/ast_node.h} +4 -4
- data/src/include/{ast_nodes.h → ast/ast_nodes.h} +38 -14
- data/src/include/{ast_pretty_print.h → ast/ast_pretty_print.h} +3 -3
- data/src/include/{pretty_print.h → ast/pretty_print.h} +4 -4
- data/src/include/errors.h +65 -7
- data/src/include/extract.h +2 -2
- data/src/include/herb.h +5 -5
- data/src/include/{lex_helpers.h → lexer/lex_helpers.h} +5 -5
- data/src/include/{lexer.h → lexer/lexer.h} +1 -1
- data/src/include/{lexer_peek_helpers.h → lexer/lexer_peek_helpers.h} +2 -2
- data/src/include/{lexer_struct.h → lexer/lexer_struct.h} +2 -2
- data/src/include/{token.h → lexer/token.h} +3 -3
- data/src/include/{token_matchers.h → lexer/token_matchers.h} +1 -1
- data/src/include/{token_struct.h → lexer/token_struct.h} +3 -3
- data/src/include/{util → lib}/hb_foreach.h +1 -1
- data/src/include/{util → lib}/hb_string.h +5 -1
- data/src/include/{location.h → location/location.h} +1 -1
- data/src/include/parser/dot_notation.h +12 -0
- data/src/include/{parser.h → parser/parser.h} +11 -4
- data/src/include/{parser_helpers.h → parser/parser_helpers.h} +6 -6
- data/src/include/{prism_context.h → prism/prism_context.h} +2 -2
- data/src/include/{prism_helpers.h → prism/prism_helpers.h} +6 -6
- data/src/include/{html_util.h → util/html_util.h} +1 -1
- data/src/include/util/ruby_util.h +9 -0
- data/src/include/{utf8.h → util/utf8.h} +1 -1
- data/src/include/{util.h → util/util.h} +1 -1
- data/src/include/version.h +1 -1
- data/src/include/visitor.h +3 -3
- data/src/{lexer_peek_helpers.c → lexer/lexer_peek_helpers.c} +3 -3
- data/src/{token.c → lexer/token.c} +8 -8
- data/src/{token_matchers.c → lexer/token_matchers.c} +2 -2
- data/src/lexer.c +6 -6
- data/src/{util → lib}/hb_allocator.c +2 -2
- data/src/{util → lib}/hb_arena.c +1 -1
- data/src/{util → lib}/hb_arena_debug.c +2 -2
- data/src/{util → lib}/hb_array.c +2 -2
- data/src/{util → lib}/hb_buffer.c +2 -2
- data/src/{util → lib}/hb_narray.c +1 -1
- data/src/{util → lib}/hb_string.c +2 -2
- data/src/{location.c → location/location.c} +2 -2
- data/src/{position.c → location/position.c} +2 -2
- data/src/{range.c → location/range.c} +1 -1
- data/src/main.c +11 -11
- data/src/parser/dot_notation.c +100 -0
- data/src/{parser_match_tags.c → parser/match_tags.c} +34 -5
- data/src/{parser_helpers.c → parser/parser_helpers.c} +10 -10
- data/src/parser.c +68 -32
- data/src/{prism_helpers.c → prism/prism_helpers.c} +7 -7
- data/src/{ruby_parser.c → prism/ruby_parser.c} +1 -1
- data/src/{html_util.c → util/html_util.c} +4 -4
- data/src/{io.c → util/io.c} +3 -3
- data/src/util/ruby_util.c +42 -0
- data/src/{utf8.c → util/utf8.c} +2 -2
- data/src/{util.c → util/util.c} +4 -4
- data/src/visitor.c +35 -3
- data/templates/ext/herb/error_helpers.c.erb +2 -2
- data/templates/ext/herb/nodes.c.erb +1 -1
- data/templates/java/error_helpers.c.erb +1 -1
- data/templates/java/error_helpers.h.erb +2 -2
- data/templates/java/nodes.c.erb +4 -4
- data/templates/java/nodes.h.erb +1 -1
- data/templates/javascript/packages/node/extension/error_helpers.cpp.erb +4 -4
- data/templates/javascript/packages/node/extension/nodes.cpp.erb +4 -4
- data/templates/lib/herb/visitor.rb.erb +14 -0
- data/templates/src/analyze/missing_end.c.erb +2 -2
- data/templates/src/{ast_nodes.c.erb → ast/ast_nodes.c.erb} +9 -9
- data/templates/src/{ast_pretty_print.c.erb → ast/ast_pretty_print.c.erb} +8 -8
- data/templates/src/errors.c.erb +8 -8
- data/templates/src/include/{ast_nodes.h.erb → ast/ast_nodes.h.erb} +11 -12
- data/templates/src/include/{ast_pretty_print.h.erb → ast/ast_pretty_print.h.erb} +2 -2
- data/templates/src/include/errors.h.erb +7 -7
- data/templates/src/{parser_match_tags.c.erb → parser/match_tags.c.erb} +4 -4
- data/templates/src/visitor.c.erb +3 -3
- data/templates/wasm/error_helpers.cpp.erb +4 -4
- data/templates/wasm/nodes.cpp.erb +5 -5
- metadata +76 -68
- data/src/include/element_source.h +0 -10
- /data/src/include/{util → lib}/hb_allocator.h +0 -0
- /data/src/include/{util → lib}/hb_arena.h +0 -0
- /data/src/include/{util → lib}/hb_arena_debug.h +0 -0
- /data/src/include/{util → lib}/hb_array.h +0 -0
- /data/src/include/{util → lib}/hb_buffer.h +0 -0
- /data/src/include/{util → lib}/hb_narray.h +0 -0
- /data/src/include/{util → lib}/string.h +0 -0
- /data/src/include/{position.h → location/position.h} +0 -0
- /data/src/include/{range.h → location/range.h} +0 -0
- /data/src/include/{herb_prism_node.h → prism/herb_prism_node.h} +0 -0
- /data/src/include/{prism_serialized.h → prism/prism_serialized.h} +0 -0
- /data/src/include/{ruby_parser.h → prism/ruby_parser.h} +0 -0
- /data/src/include/{io.h → util/io.h} +0 -0
- /data/templates/src/include/{util → lib}/hb_foreach.h.erb +0 -0
data/sig/herb/ast/nodes.rbs
CHANGED
|
@@ -944,6 +944,9 @@ module Herb
|
|
|
944
944
|
# | tag_closing: Herb::Token?,
|
|
945
945
|
# | prism_node: String?,
|
|
946
946
|
# | body: Array[Herb::AST::Node],
|
|
947
|
+
# | rescue_clause: Herb::AST::ERBRescueNode?,
|
|
948
|
+
# | else_clause: Herb::AST::ERBElseNode?,
|
|
949
|
+
# | ensure_clause: Herb::AST::ERBEnsureNode?,
|
|
947
950
|
# | end_node: Herb::AST::ERBEndNode?,
|
|
948
951
|
# | }
|
|
949
952
|
class ERBBlockNode < Node
|
|
@@ -959,10 +962,16 @@ module Herb
|
|
|
959
962
|
|
|
960
963
|
attr_reader body: Array[Herb::AST::Node]
|
|
961
964
|
|
|
965
|
+
attr_reader rescue_clause: Herb::AST::ERBRescueNode?
|
|
966
|
+
|
|
967
|
+
attr_reader else_clause: Herb::AST::ERBElseNode?
|
|
968
|
+
|
|
969
|
+
attr_reader ensure_clause: Herb::AST::ERBEnsureNode?
|
|
970
|
+
|
|
962
971
|
attr_reader end_node: Herb::AST::ERBEndNode?
|
|
963
972
|
|
|
964
|
-
# : (String, Location, Array[Herb::Errors::Error], Herb::Token, Herb::Token, Herb::Token, String, Array[Herb::AST::Node], Herb::AST::ERBEndNode) -> void
|
|
965
|
-
def initialize: (String, Location, Array[Herb::Errors::Error], Herb::Token, Herb::Token, Herb::Token, String, Array[Herb::AST::Node], Herb::AST::ERBEndNode) -> void
|
|
973
|
+
# : (String, Location, Array[Herb::Errors::Error], Herb::Token, Herb::Token, Herb::Token, String, Array[Herb::AST::Node], Herb::AST::ERBRescueNode, Herb::AST::ERBElseNode, Herb::AST::ERBEnsureNode, Herb::AST::ERBEndNode) -> void
|
|
974
|
+
def initialize: (String, Location, Array[Herb::Errors::Error], Herb::Token, Herb::Token, Herb::Token, String, Array[Herb::AST::Node], Herb::AST::ERBRescueNode, Herb::AST::ERBElseNode, Herb::AST::ERBEnsureNode, Herb::AST::ERBEndNode) -> void
|
|
966
975
|
|
|
967
976
|
# : () -> Prism::node?
|
|
968
977
|
def deserialized_prism_node: () -> Prism::node?
|
|
@@ -1604,6 +1613,93 @@ module Herb
|
|
|
1604
1613
|
def tree_inspect: (?indent: Integer, ?depth: Integer, ?depth_limit: Integer) -> String
|
|
1605
1614
|
end
|
|
1606
1615
|
|
|
1616
|
+
# : type serialized_ruby_strict_local_node = {
|
|
1617
|
+
# | name: Herb::Token?,
|
|
1618
|
+
# | default_value: Herb::AST::RubyLiteralNode?,
|
|
1619
|
+
# | required: bool,
|
|
1620
|
+
# | double_splat: bool,
|
|
1621
|
+
# | }
|
|
1622
|
+
class RubyStrictLocalNode < Node
|
|
1623
|
+
include Colors
|
|
1624
|
+
|
|
1625
|
+
attr_reader name: Herb::Token?
|
|
1626
|
+
|
|
1627
|
+
attr_reader default_value: Herb::AST::RubyLiteralNode?
|
|
1628
|
+
|
|
1629
|
+
attr_reader required: bool
|
|
1630
|
+
|
|
1631
|
+
attr_reader double_splat: bool
|
|
1632
|
+
|
|
1633
|
+
# : (String, Location, Array[Herb::Errors::Error], Herb::Token, Herb::AST::RubyLiteralNode, bool, bool) -> void
|
|
1634
|
+
def initialize: (String, Location, Array[Herb::Errors::Error], Herb::Token, Herb::AST::RubyLiteralNode, bool, bool) -> void
|
|
1635
|
+
|
|
1636
|
+
# : () -> serialized_ruby_strict_local_node
|
|
1637
|
+
def to_hash: () -> serialized_ruby_strict_local_node
|
|
1638
|
+
|
|
1639
|
+
# : (Visitor) -> void
|
|
1640
|
+
def accept: (Visitor) -> void
|
|
1641
|
+
|
|
1642
|
+
# : () -> Array[Herb::AST::Node?]
|
|
1643
|
+
def child_nodes: () -> Array[Herb::AST::Node?]
|
|
1644
|
+
|
|
1645
|
+
# : () -> Array[Herb::AST::Node]
|
|
1646
|
+
def compact_child_nodes: () -> Array[Herb::AST::Node]
|
|
1647
|
+
|
|
1648
|
+
# : () -> String
|
|
1649
|
+
def inspect: () -> String
|
|
1650
|
+
|
|
1651
|
+
# : (?indent: Integer, ?depth: Integer, ?depth_limit: Integer) -> String
|
|
1652
|
+
def tree_inspect: (?indent: Integer, ?depth: Integer, ?depth_limit: Integer) -> String
|
|
1653
|
+
end
|
|
1654
|
+
|
|
1655
|
+
# : type serialized_erb_strict_locals_node = {
|
|
1656
|
+
# | tag_opening: Herb::Token?,
|
|
1657
|
+
# | content: Herb::Token?,
|
|
1658
|
+
# | tag_closing: Herb::Token?,
|
|
1659
|
+
# | analyzed_ruby: nil,
|
|
1660
|
+
# | prism_node: String?,
|
|
1661
|
+
# | locals: Array[Herb::AST::RubyStrictLocalNode]?,
|
|
1662
|
+
# | }
|
|
1663
|
+
class ERBStrictLocalsNode < Node
|
|
1664
|
+
include Colors
|
|
1665
|
+
|
|
1666
|
+
attr_reader tag_opening: Herb::Token?
|
|
1667
|
+
|
|
1668
|
+
attr_reader content: Herb::Token?
|
|
1669
|
+
|
|
1670
|
+
attr_reader tag_closing: Herb::Token?
|
|
1671
|
+
|
|
1672
|
+
attr_reader analyzed_ruby: nil
|
|
1673
|
+
|
|
1674
|
+
attr_reader prism_node: String?
|
|
1675
|
+
|
|
1676
|
+
attr_reader locals: Array[Herb::AST::RubyStrictLocalNode]?
|
|
1677
|
+
|
|
1678
|
+
# : (String, Location, Array[Herb::Errors::Error], Herb::Token, Herb::Token, Herb::Token, nil, String, Array[Herb::AST::RubyStrictLocalNode]) -> void
|
|
1679
|
+
def initialize: (String, Location, Array[Herb::Errors::Error], Herb::Token, Herb::Token, Herb::Token, nil, String, Array[Herb::AST::RubyStrictLocalNode]) -> void
|
|
1680
|
+
|
|
1681
|
+
# : () -> Prism::node?
|
|
1682
|
+
def deserialized_prism_node: () -> Prism::node?
|
|
1683
|
+
|
|
1684
|
+
# : () -> serialized_erb_strict_locals_node
|
|
1685
|
+
def to_hash: () -> serialized_erb_strict_locals_node
|
|
1686
|
+
|
|
1687
|
+
# : (Visitor) -> void
|
|
1688
|
+
def accept: (Visitor) -> void
|
|
1689
|
+
|
|
1690
|
+
# : () -> Array[Herb::AST::Node?]
|
|
1691
|
+
def child_nodes: () -> Array[Herb::AST::Node?]
|
|
1692
|
+
|
|
1693
|
+
# : () -> Array[Herb::AST::Node]
|
|
1694
|
+
def compact_child_nodes: () -> Array[Herb::AST::Node]
|
|
1695
|
+
|
|
1696
|
+
# : () -> String
|
|
1697
|
+
def inspect: () -> String
|
|
1698
|
+
|
|
1699
|
+
# : (?indent: Integer, ?depth: Integer, ?depth_limit: Integer) -> String
|
|
1700
|
+
def tree_inspect: (?indent: Integer, ?depth: Integer, ?depth_limit: Integer) -> String
|
|
1701
|
+
end
|
|
1702
|
+
|
|
1607
1703
|
# : type serialized_erb_yield_node = {
|
|
1608
1704
|
# | tag_opening: Herb::Token?,
|
|
1609
1705
|
# | content: Herb::Token?,
|
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
module Herb
|
|
4
4
|
class Engine
|
|
5
5
|
class Compiler < ::Herb::Visitor
|
|
6
|
+
EXPRESSION_TOKEN_TYPES: untyped
|
|
7
|
+
|
|
6
8
|
attr_reader tokens: untyped
|
|
7
9
|
|
|
8
10
|
def initialize: (untyped engine, ?untyped options) -> untyped
|
|
@@ -89,6 +91,9 @@ module Herb
|
|
|
89
91
|
|
|
90
92
|
def pop_context: () -> untyped
|
|
91
93
|
|
|
94
|
+
# : (untyped node) { () -> untyped } -> untyped
|
|
95
|
+
def with_element_context: (untyped node) { () -> untyped } -> untyped
|
|
96
|
+
|
|
92
97
|
def process_erb_tag: (untyped node, ?skip_comment_check: untyped) -> untyped
|
|
93
98
|
|
|
94
99
|
def add_text: (untyped text) -> untyped
|
|
@@ -129,12 +134,20 @@ module Herb
|
|
|
129
134
|
|
|
130
135
|
def preceding_token_ends_with_newline?: () -> untyped
|
|
131
136
|
|
|
132
|
-
def
|
|
137
|
+
def last_text_token: () -> untyped
|
|
138
|
+
|
|
139
|
+
def extract_leading_space: () -> untyped
|
|
133
140
|
|
|
134
|
-
def
|
|
141
|
+
def leading_space_follows_newline?: () -> untyped
|
|
142
|
+
|
|
143
|
+
def extract_and_remove_leading_space!: () -> untyped
|
|
135
144
|
|
|
136
145
|
def apply_trim: (untyped node, untyped code) -> untyped
|
|
137
146
|
|
|
147
|
+
def save_pending_leading_whitespace!: (untyped whitespace) -> untyped
|
|
148
|
+
|
|
149
|
+
def restore_pending_leading_whitespace!: () -> untyped
|
|
150
|
+
|
|
138
151
|
def remove_trailing_whitespace_from_last_token!: () -> untyped
|
|
139
152
|
end
|
|
140
153
|
end
|
|
@@ -14,6 +14,10 @@ module Herb
|
|
|
14
14
|
|
|
15
15
|
def validate_attribute_name_security: (untyped node) -> untyped
|
|
16
16
|
|
|
17
|
+
def tag_attributes_prism_node?: (untyped prism_node) -> untyped
|
|
18
|
+
|
|
19
|
+
def conditional_tag_attributes_prism_node?: (untyped prism_node) -> untyped
|
|
20
|
+
|
|
17
21
|
def add_security_error: (untyped location, untyped message, untyped suggestion) -> untyped
|
|
18
22
|
|
|
19
23
|
def add_diagnostic: (untyped message, untyped location, untyped severity, ?code: untyped, ?source: untyped, ?suggestion: untyped) -> untyped
|
data/sig/herb/errors.rbs
CHANGED
|
@@ -572,5 +572,127 @@ module Herb
|
|
|
572
572
|
# : (?indent: Integer, ?depth: Integer, ?depth_limit: Integer) -> String
|
|
573
573
|
def tree_inspect: (?indent: Integer, ?depth: Integer, ?depth_limit: Integer) -> String
|
|
574
574
|
end
|
|
575
|
+
|
|
576
|
+
class StrictLocalsPositionalArgumentError < Error
|
|
577
|
+
include Colors
|
|
578
|
+
|
|
579
|
+
attr_reader name: String?
|
|
580
|
+
|
|
581
|
+
# : (String, Location?, String, String) -> void
|
|
582
|
+
def initialize: (String, Location?, String, String) -> void
|
|
583
|
+
|
|
584
|
+
# : () -> String
|
|
585
|
+
def inspect: () -> String
|
|
586
|
+
|
|
587
|
+
# : () -> serialized_strict_locals_positional_argument_error
|
|
588
|
+
def to_hash: () -> serialized_strict_locals_positional_argument_error
|
|
589
|
+
|
|
590
|
+
# : (?indent: Integer, ?depth: Integer, ?depth_limit: Integer) -> String
|
|
591
|
+
def tree_inspect: (?indent: Integer, ?depth: Integer, ?depth_limit: Integer) -> String
|
|
592
|
+
end
|
|
593
|
+
|
|
594
|
+
class StrictLocalsBlockArgumentError < Error
|
|
595
|
+
include Colors
|
|
596
|
+
|
|
597
|
+
attr_reader name: String?
|
|
598
|
+
|
|
599
|
+
# : (String, Location?, String, String) -> void
|
|
600
|
+
def initialize: (String, Location?, String, String) -> void
|
|
601
|
+
|
|
602
|
+
# : () -> String
|
|
603
|
+
def inspect: () -> String
|
|
604
|
+
|
|
605
|
+
# : () -> serialized_strict_locals_block_argument_error
|
|
606
|
+
def to_hash: () -> serialized_strict_locals_block_argument_error
|
|
607
|
+
|
|
608
|
+
# : (?indent: Integer, ?depth: Integer, ?depth_limit: Integer) -> String
|
|
609
|
+
def tree_inspect: (?indent: Integer, ?depth: Integer, ?depth_limit: Integer) -> String
|
|
610
|
+
end
|
|
611
|
+
|
|
612
|
+
class StrictLocalsSplatArgumentError < Error
|
|
613
|
+
include Colors
|
|
614
|
+
|
|
615
|
+
attr_reader name: String?
|
|
616
|
+
|
|
617
|
+
# : (String, Location?, String, String) -> void
|
|
618
|
+
def initialize: (String, Location?, String, String) -> void
|
|
619
|
+
|
|
620
|
+
# : () -> String
|
|
621
|
+
def inspect: () -> String
|
|
622
|
+
|
|
623
|
+
# : () -> serialized_strict_locals_splat_argument_error
|
|
624
|
+
def to_hash: () -> serialized_strict_locals_splat_argument_error
|
|
625
|
+
|
|
626
|
+
# : (?indent: Integer, ?depth: Integer, ?depth_limit: Integer) -> String
|
|
627
|
+
def tree_inspect: (?indent: Integer, ?depth: Integer, ?depth_limit: Integer) -> String
|
|
628
|
+
end
|
|
629
|
+
|
|
630
|
+
class StrictLocalsMissingParenthesisError < Error
|
|
631
|
+
include Colors
|
|
632
|
+
|
|
633
|
+
attr_reader rest: String?
|
|
634
|
+
|
|
635
|
+
# : (String, Location?, String, String) -> void
|
|
636
|
+
def initialize: (String, Location?, String, String) -> void
|
|
637
|
+
|
|
638
|
+
# : () -> String
|
|
639
|
+
def inspect: () -> String
|
|
640
|
+
|
|
641
|
+
# : () -> serialized_strict_locals_missing_parenthesis_error
|
|
642
|
+
def to_hash: () -> serialized_strict_locals_missing_parenthesis_error
|
|
643
|
+
|
|
644
|
+
# : (?indent: Integer, ?depth: Integer, ?depth_limit: Integer) -> String
|
|
645
|
+
def tree_inspect: (?indent: Integer, ?depth: Integer, ?depth_limit: Integer) -> String
|
|
646
|
+
end
|
|
647
|
+
|
|
648
|
+
class StrictLocalsDuplicateDeclarationError < Error
|
|
649
|
+
include Colors
|
|
650
|
+
|
|
651
|
+
# : () -> String
|
|
652
|
+
def inspect: () -> String
|
|
653
|
+
|
|
654
|
+
# : (?indent: Integer, ?depth: Integer, ?depth_limit: Integer) -> String
|
|
655
|
+
def tree_inspect: (?indent: Integer, ?depth: Integer, ?depth_limit: Integer) -> String
|
|
656
|
+
end
|
|
657
|
+
|
|
658
|
+
class VoidElementContentError < Error
|
|
659
|
+
include Colors
|
|
660
|
+
|
|
661
|
+
attr_reader tag_name: Herb::Token?
|
|
662
|
+
|
|
663
|
+
attr_reader helper_name: String?
|
|
664
|
+
|
|
665
|
+
attr_reader content_type: String?
|
|
666
|
+
|
|
667
|
+
# : (String, Location?, String, Herb::Token, String, String) -> void
|
|
668
|
+
def initialize: (String, Location?, String, Herb::Token, String, String) -> void
|
|
669
|
+
|
|
670
|
+
# : () -> String
|
|
671
|
+
def inspect: () -> String
|
|
672
|
+
|
|
673
|
+
# : () -> serialized_void_element_content_error
|
|
674
|
+
def to_hash: () -> serialized_void_element_content_error
|
|
675
|
+
|
|
676
|
+
# : (?indent: Integer, ?depth: Integer, ?depth_limit: Integer) -> String
|
|
677
|
+
def tree_inspect: (?indent: Integer, ?depth: Integer, ?depth_limit: Integer) -> String
|
|
678
|
+
end
|
|
679
|
+
|
|
680
|
+
class DotNotationCasingError < Error
|
|
681
|
+
include Colors
|
|
682
|
+
|
|
683
|
+
attr_reader segment: Herb::Token?
|
|
684
|
+
|
|
685
|
+
# : (String, Location?, String, Herb::Token) -> void
|
|
686
|
+
def initialize: (String, Location?, String, Herb::Token) -> void
|
|
687
|
+
|
|
688
|
+
# : () -> String
|
|
689
|
+
def inspect: () -> String
|
|
690
|
+
|
|
691
|
+
# : () -> serialized_dot_notation_casing_error
|
|
692
|
+
def to_hash: () -> serialized_dot_notation_casing_error
|
|
693
|
+
|
|
694
|
+
# : (?indent: Integer, ?depth: Integer, ?depth_limit: Integer) -> String
|
|
695
|
+
def tree_inspect: (?indent: Integer, ?depth: Integer, ?depth_limit: Integer) -> String
|
|
696
|
+
end
|
|
575
697
|
end
|
|
576
698
|
end
|
data/sig/herb/parser_options.rbs
CHANGED
|
@@ -12,6 +12,8 @@ module Herb
|
|
|
12
12
|
|
|
13
13
|
attr_reader render_nodes: bool
|
|
14
14
|
|
|
15
|
+
attr_reader strict_locals: bool
|
|
16
|
+
|
|
15
17
|
attr_reader prism_program: bool
|
|
16
18
|
|
|
17
19
|
attr_reader prism_nodes: bool
|
|
@@ -28,14 +30,16 @@ module Herb
|
|
|
28
30
|
|
|
29
31
|
DEFAULT_RENDER_NODES: bool
|
|
30
32
|
|
|
33
|
+
DEFAULT_STRICT_LOCALS: bool
|
|
34
|
+
|
|
31
35
|
DEFAULT_PRISM_PROGRAM: bool
|
|
32
36
|
|
|
33
37
|
DEFAULT_PRISM_NODES: bool
|
|
34
38
|
|
|
35
39
|
DEFAULT_PRISM_NODES_DEEP: bool
|
|
36
40
|
|
|
37
|
-
# : (?strict: bool, ?track_whitespace: bool, ?analyze: bool, ?action_view_helpers: bool, ?prism_nodes: bool, ?prism_nodes_deep: bool, ?prism_program: bool) -> void
|
|
38
|
-
def initialize: (?strict: bool, ?track_whitespace: bool, ?analyze: bool, ?action_view_helpers: bool, ?prism_nodes: bool, ?prism_nodes_deep: bool, ?prism_program: bool) -> void
|
|
41
|
+
# : (?strict: bool, ?track_whitespace: bool, ?analyze: bool, ?action_view_helpers: bool, ?render_nodes: bool, ?strict_locals: bool, ?prism_nodes: bool, ?prism_nodes_deep: bool, ?prism_program: bool) -> void
|
|
42
|
+
def initialize: (?strict: bool, ?track_whitespace: bool, ?analyze: bool, ?action_view_helpers: bool, ?render_nodes: bool, ?strict_locals: bool, ?prism_nodes: bool, ?prism_nodes_deep: bool, ?prism_program: bool) -> void
|
|
39
43
|
|
|
40
44
|
# : () -> Hash[Symbol, bool]
|
|
41
45
|
def to_h: () -> Hash[Symbol, bool]
|
data/sig/herb/visitor.rbs
CHANGED
|
@@ -13,6 +13,12 @@ module Herb
|
|
|
13
13
|
# : (Herb::AST::Node) -> void
|
|
14
14
|
def visit_child_nodes: (Herb::AST::Node) -> void
|
|
15
15
|
|
|
16
|
+
# : (Herb::AST::Node) -> void
|
|
17
|
+
def visit_node: (Herb::AST::Node) -> void
|
|
18
|
+
|
|
19
|
+
# : (Herb::AST::Node) -> void
|
|
20
|
+
def visit_erb_node: (Herb::AST::Node) -> void
|
|
21
|
+
|
|
16
22
|
# : (Herb::AST::DocumentNode) -> void
|
|
17
23
|
def visit_document_node: (Herb::AST::DocumentNode) -> void
|
|
18
24
|
|
|
@@ -127,6 +133,12 @@ module Herb
|
|
|
127
133
|
# : (Herb::AST::ERBRenderNode) -> void
|
|
128
134
|
def visit_erb_render_node: (Herb::AST::ERBRenderNode) -> void
|
|
129
135
|
|
|
136
|
+
# : (Herb::AST::RubyStrictLocalNode) -> void
|
|
137
|
+
def visit_ruby_strict_local_node: (Herb::AST::RubyStrictLocalNode) -> void
|
|
138
|
+
|
|
139
|
+
# : (Herb::AST::ERBStrictLocalsNode) -> void
|
|
140
|
+
def visit_erb_strict_locals_node: (Herb::AST::ERBStrictLocalsNode) -> void
|
|
141
|
+
|
|
130
142
|
# : (Herb::AST::ERBYieldNode) -> void
|
|
131
143
|
def visit_erb_yield_node: (Herb::AST::ERBYieldNode) -> void
|
|
132
144
|
|
|
@@ -140,4 +140,33 @@ module Herb
|
|
|
140
140
|
layout: String,
|
|
141
141
|
}
|
|
142
142
|
|
|
143
|
+
type serialized_strict_locals_positional_argument_error = serialized_error & {
|
|
144
|
+
name: String,
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
type serialized_strict_locals_block_argument_error = serialized_error & {
|
|
148
|
+
name: String,
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
type serialized_strict_locals_splat_argument_error = serialized_error & {
|
|
152
|
+
name: String,
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
type serialized_strict_locals_missing_parenthesis_error = serialized_error & {
|
|
156
|
+
rest: String,
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
type serialized_strict_locals_duplicate_declaration_error = serialized_error & {
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
type serialized_void_element_content_error = serialized_error & {
|
|
163
|
+
tag_name: Herb::Token,
|
|
164
|
+
helper_name: String,
|
|
165
|
+
content_type: String,
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
type serialized_dot_notation_casing_error = serialized_error & {
|
|
169
|
+
segment: Herb::Token,
|
|
170
|
+
}
|
|
171
|
+
|
|
143
172
|
end
|
|
@@ -170,6 +170,9 @@ module Herb
|
|
|
170
170
|
tag_closing: Herb::Token,
|
|
171
171
|
prism_node: String,
|
|
172
172
|
body: Array[Herb::AST::Node],
|
|
173
|
+
rescue_clause: Herb::AST::ERBRescueNode,
|
|
174
|
+
else_clause: Herb::AST::ERBElseNode,
|
|
175
|
+
ensure_clause: Herb::AST::ERBEnsureNode,
|
|
173
176
|
end_node: Herb::AST::ERBEndNode,
|
|
174
177
|
}
|
|
175
178
|
|
|
@@ -299,6 +302,22 @@ module Herb
|
|
|
299
302
|
locals: Array[Herb::AST::RubyRenderLocalNode],
|
|
300
303
|
}
|
|
301
304
|
|
|
305
|
+
type serialized_ruby_strict_local_node = serialized_node & {
|
|
306
|
+
name: Herb::Token,
|
|
307
|
+
default_value: Herb::AST::RubyLiteralNode,
|
|
308
|
+
required: bool,
|
|
309
|
+
double_splat: bool,
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
type serialized_erb_strict_locals_node = serialized_node & {
|
|
313
|
+
tag_opening: Herb::Token,
|
|
314
|
+
content: Herb::Token,
|
|
315
|
+
tag_closing: Herb::Token,
|
|
316
|
+
analyzed_ruby: nil,
|
|
317
|
+
prism_node: String,
|
|
318
|
+
locals: Array[Herb::AST::RubyStrictLocalNode],
|
|
319
|
+
}
|
|
320
|
+
|
|
302
321
|
type serialized_erb_yield_node = serialized_node & {
|
|
303
322
|
tag_opening: Herb::Token,
|
|
304
323
|
content: Herb::Token,
|