Skip to content

Maintenance Ruby 3.3 gets fixes, but no new features. Switch to Ruby 4.0 →

module · Ruby 3.3

Prism::DSL

149 instance methods

The DSL module provides a set of methods that can be used to create prism nodes in a more concise manner. For example, instead of writing:

Example
source = Prism::Source.new("[1]")

Prism::ArrayNode.new(
  [
    Prism::IntegerNode.new(
      Prism::IntegerBaseFlags::DECIMAL,
      Prism::Location.new(source, 1, 1),
    )
  ],
  Prism::Location.new(source, 0, 1),
  Prism::Location.new(source, 2, 1)
)

you could instead write:

source = Prism::Source.new("[1]")

ArrayNode(
  IntegerNode(Prism::IntegerBaseFlags::DECIMAL, Location(source, 1, 1))),
  Location(source, 0, 1),
  Location(source, 2, 1)
)

This is mostly helpful in the context of writing tests, but can also be used to generate trees programmatically.

Instance methods 149

#AliasGlobalVariableNode #AliasMethodNode #AlternationPatternNode #AndNode #ArgumentsNode #ArrayNode #ArrayPatternNode #AssocNode #AssocSplatNode #BackReferenceReadNode #BeginNode #BlockArgumentNode #BlockLocalVariableNode #BlockNode #BlockParameterNode #BlockParametersNode #BreakNode #CallAndWriteNode #CallNode #CallOperatorWriteNode #CallOrWriteNode #CallTargetNode #CapturePatternNode #CaseMatchNode #CaseNode #ClassNode #ClassVariableAndWriteNode #ClassVariableOperatorWriteNode #ClassVariableOrWriteNode #ClassVariableReadNode #ClassVariableTargetNode #ClassVariableWriteNode #ConstantAndWriteNode #ConstantOperatorWriteNode #ConstantOrWriteNode #ConstantPathAndWriteNode #ConstantPathNode #ConstantPathOperatorWriteNode #ConstantPathOrWriteNode #ConstantPathTargetNode #ConstantPathWriteNode #ConstantReadNode #ConstantTargetNode #ConstantWriteNode #DefinedNode #DefNode #ElseNode #EmbeddedStatementsNode #EmbeddedVariableNode #EnsureNode #FalseNode #FindPatternNode #FlipFlopNode #FloatNode #ForNode #ForwardingArgumentsNode #ForwardingParameterNode #ForwardingSuperNode #GlobalVariableAndWriteNode #GlobalVariableOperatorWriteNode #GlobalVariableOrWriteNode #GlobalVariableReadNode #GlobalVariableTargetNode #GlobalVariableWriteNode #HashNode #HashPatternNode #IfNode #ImaginaryNode #ImplicitNode #ImplicitRestNode #IndexAndWriteNode #IndexOperatorWriteNode #IndexOrWriteNode #IndexTargetNode #InNode #InstanceVariableAndWriteNode #InstanceVariableOperatorWriteNode #InstanceVariableOrWriteNode #InstanceVariableReadNode #InstanceVariableTargetNode #InstanceVariableWriteNode #IntegerNode #InterpolatedMatchLastLineNode #InterpolatedRegularExpressionNode #InterpolatedStringNode #InterpolatedSymbolNode #InterpolatedXStringNode #KeywordHashNode #KeywordRestParameterNode #LambdaNode #LocalVariableAndWriteNode #LocalVariableOperatorWriteNode #LocalVariableOrWriteNode #LocalVariableReadNode #LocalVariableTargetNode #LocalVariableWriteNode #Location #MatchLastLineNode #MatchPredicateNode #MatchRequiredNode #MatchWriteNode #MissingNode #ModuleNode #MultiTargetNode #MultiWriteNode #NextNode #NilNode #NoKeywordsParameterNode #NumberedParametersNode #NumberedReferenceReadNode #OptionalKeywordParameterNode #OptionalParameterNode #OrNode #ParametersNode #ParenthesesNode #PinnedExpressionNode #PinnedVariableNode #PostExecutionNode #PreExecutionNode #ProgramNode #RangeNode #RationalNode #RedoNode #RegularExpressionNode #RequiredKeywordParameterNode #RequiredParameterNode #RescueModifierNode #RescueNode #RestParameterNode #RetryNode #ReturnNode #SelfNode #SingletonClassNode #SourceEncodingNode #SourceFileNode #SourceLineNode #SplatNode #StatementsNode #StringNode #SuperNode #SymbolNode #TrueNode #UndefNode #UnlessNode #UntilNode #WhenNode #WhileNode #XStringNode #YieldNode