class YARP::RegularExpressionNode
Represents a regular expression literal with no interpolation.
/foo/i ^^^^^^
Attributes
attr_reader closing_loc
: Location
attr_reader content_loc
: Location
attr_reader opening_loc
: Location
attr_reader unescaped: String
Public Class Methods
def initialize: (opening_loc
: Location
, content_loc
: Location
, closing_loc
: Location
, unescaped: String, flags: Integer, location: Location
) -> void
# File yarp/node.rb, line 8885 def initialize(opening_loc, content_loc, closing_loc, unescaped, flags, location) @opening_loc = opening_loc @content_loc = content_loc @closing_loc = closing_loc @unescaped = unescaped @flags = flags @location = location end
Public Instance Methods
def accept: (visitor: Visitor
) -> void
# File yarp/node.rb, line 8895 def accept(visitor) visitor.visit_regular_expression_node(self) end
def ascii_8bit?: () -> bool
# File yarp/node.rb, line 8965 def ascii_8bit? flags.anybits?(RegularExpressionFlags::ASCII_8BIT) end
def child_nodes
: () -> Array[nil | Node]
# File yarp/node.rb, line 8900 def child_nodes [] end
def closing: () -> String
# File yarp/node.rb, line 8940 def closing closing_loc.slice end
def comment_targets
: () -> Array[Node | Location]
# File yarp/node.rb, line 8905 def comment_targets [opening_loc, content_loc, closing_loc] end
def content: () -> String
# File yarp/node.rb, line 8935 def content content_loc.slice end
def copy: (**params) -> RegularExpressionNode
# File yarp/node.rb, line 8910 def copy(**params) RegularExpressionNode.new( params.fetch(:opening_loc) { opening_loc }, params.fetch(:content_loc) { content_loc }, params.fetch(:closing_loc) { closing_loc }, params.fetch(:unescaped) { unescaped }, params.fetch(:flags) { flags }, params.fetch(:location) { location }, ) end
def deconstruct_keys
: (keys: Array) -> Hash[Symbol, nil | Node
| Array | String | Token
| Array | Location]
# File yarp/node.rb, line 8925 def deconstruct_keys(keys) { opening_loc: opening_loc, content_loc: content_loc, closing_loc: closing_loc, unescaped: unescaped, flags: flags, location: location } end
def euc_jp?: () -> bool
# File yarp/node.rb, line 8960 def euc_jp? flags.anybits?(RegularExpressionFlags::EUC_JP) end
def extended?: () -> bool
# File yarp/node.rb, line 8950 def extended? flags.anybits?(RegularExpressionFlags::EXTENDED) end
def ignore_case?: () -> bool
# File yarp/node.rb, line 8945 def ignore_case? flags.anybits?(RegularExpressionFlags::IGNORE_CASE) end
# File yarp/node.rb, line 8984 def inspect(inspector = NodeInspector.new) inspector << inspector.header(self) inspector << "├── opening_loc: #{inspector.location(opening_loc)}\n" inspector << "├── content_loc: #{inspector.location(content_loc)}\n" inspector << "├── closing_loc: #{inspector.location(closing_loc)}\n" inspector << "├── unescaped: #{unescaped.inspect}\n" flags = [("ignore_case" if ignore_case?), ("extended" if extended?), ("multi_line" if multi_line?), ("euc_jp" if euc_jp?), ("ascii_8bit" if ascii_8bit?), ("windows_31j" if windows_31j?), ("utf_8" if utf_8?), ("once" if once?)].compact inspector << "└── flags: #{flags.empty? ? "∅" : flags.join(", ")}\n" inspector.to_str end
def multi_line?: () -> bool
# File yarp/node.rb, line 8955 def multi_line? flags.anybits?(RegularExpressionFlags::MULTI_LINE) end
def once?: () -> bool
# File yarp/node.rb, line 8980 def once? flags.anybits?(RegularExpressionFlags::ONCE) end
def opening: () -> String
# File yarp/node.rb, line 8930 def opening opening_loc.slice end
Returns a numeric value that represents the flags that were used to create the regular expression. This mirrors the Regexp#options method in Ruby. Note that this is effectively masking only the three common flags that are used in Ruby, and does not include the full set of flags like encoding.
# File yarp.rb, line 614 def options flags & 0b111 end
def utf_8?: () -> bool
# File yarp/node.rb, line 8975 def utf_8? flags.anybits?(RegularExpressionFlags::UTF_8) end
def windows_31j?: () -> bool
# File yarp/node.rb, line 8970 def windows_31j? flags.anybits?(RegularExpressionFlags::WINDOWS_31J) end