🔍

No recent searches

# class Prism::StringQuery

Here we are going to patch `StringQuery` to put in the class-level methods so that it can maintain a consistent interface

Query methods that allow categorizing strings based on their context for where they could be valid in a Ruby syntax tree.

### Attributes

string [R]

The string that this query is wrapping.

### Public Class Methods

constant? (string)
Source

    # File lib/prism/ffi.rb, line 554
    def constant?(string)
      query(LibRubyParser.pm_string_query_constant(string, string.bytesize, string.encoding.name))
    end

Mirrors the C extension’s `StringQuery::constant?` method.

local? (string)
Source

    # File lib/prism/ffi.rb, line 549
    def local?(string)
      query(LibRubyParser.pm_string_query_local(string, string.bytesize, string.encoding.name))
    end

Mirrors the C extension’s `StringQuery::local?` method.

method_name? (string)
Source

    # File lib/prism/ffi.rb, line 559
    def method_name?(string)
      query(LibRubyParser.pm_string_query_method_name(string, string.bytesize, string.encoding.name))
    end

Mirrors the C extension’s `StringQuery::method_name?` method.

new (string)
Source

    # File lib/prism/string_query.rb, line 12
    def initialize(string)
      @string = string
    end

Initialize a new query with the given string.

### Private Class Methods

query (result)
Source

    # File lib/prism/ffi.rb, line 566
    def query(result)
      case result
      when :PM_STRING_QUERY_ERROR
        raise ArgumentError, "Invalid or non ascii-compatible encoding"
      when :PM_STRING_QUERY_FALSE
        false
      when :PM_STRING_QUERY_TRUE
        true
      end
    end

Parse the enum result and return an appropriate boolean.

### Public Instance Methods

constant? ()
Source

    # File lib/prism/string_query.rb, line 22
    def constant?
      StringQuery.constant?(string)
    end

Whether or not this string is a valid constant name.

local? ()
Source

    # File lib/prism/string_query.rb, line 17
    def local?
      StringQuery.local?(string)
    end

Whether or not this string is a valid local variable name.

method_name? ()
Source

    # File lib/prism/string_query.rb, line 27
    def method_name?
      StringQuery.method_name?(string)
    end

Whether or not this string is a valid method name.