PHP 8.2.31
Preview: lex_value.rb Size: 1.50 KB
/proc/thread-self/root/opt/alt/ruby40/share/ruby/syntax_suggest/lex_value.rb

# frozen_string_literal: true

module SyntaxSuggest
  # Value object for accessing lex values
  #
  # This lex:
  #
  #   [1, 0], :on_ident, "describe", CMDARG
  #
  # Would translate into:
  #
  #  lex.line # => 1
  #  lex.type # => :on_indent
  #  lex.token # => "describe"
  class LexValue
    attr_reader :line, :type, :token, :state

    def initialize(line, type, token, state, last_lex = nil)
      @line = line
      @type = type
      @token = token
      @state = state

      set_kw_end(last_lex)
    end

    private def set_kw_end(last_lex)
      @is_end = false
      @is_kw = false
      return if type != :on_kw

      return if last_lex && last_lex.fname? # https://github.com/ruby/ruby/commit/776759e300e4659bb7468e2b97c8c2d4359a2953

      case token
      when "if", "unless", "while", "until"
        # Only count if/unless when it's not a "trailing" if/unless
        # https://github.com/ruby/ruby/blob/06b44f819eb7b5ede1ff69cecb25682b56a1d60c/lib/irb/ruby-lex.rb#L374-L375
        @is_kw = true unless expr_label?
      when "def", "case", "for", "begin", "class", "module", "do"
        @is_kw = true
      when "end"
        @is_end = true
      end
    end

    def fname?
      state.allbits?(Ripper::EXPR_FNAME)
    end

    def ignore_newline?
      type == :on_ignored_nl
    end

    def is_end?
      @is_end
    end

    def is_kw?
      @is_kw
    end

    def expr_beg?
      state.anybits?(Ripper::EXPR_BEG)
    end

    def expr_label?
      state.allbits?(Ripper::EXPR_LABEL)
    end
  end
end

Directory Contents

Dirs: 1 × Files: 26

Name Size Perms Modified Actions
capture DIR
- drwxr-xr-x 2026-06-09 07:03:21
Edit Download
6.07 KB lrw-r--r-- 2026-05-21 12:15:23
Edit Download
6.90 KB lrw-r--r-- 2026-05-21 12:15:23
Edit Download
4.88 KB lrw-r--r-- 2026-05-21 12:15:23
Edit Download
6.67 KB lrw-r--r-- 2026-05-21 12:15:23
Edit Download
8.73 KB lrw-r--r-- 2026-05-21 12:15:23
Edit Download
3.12 KB lrw-r--r-- 2026-05-21 12:15:23
Edit Download
2.13 KB lrw-r--r-- 2026-05-21 12:15:23
Edit Download
5.61 KB lrw-r--r-- 2026-05-21 12:15:23
Edit Download
6.58 KB lrw-r--r-- 2026-05-21 12:15:23
Edit Download
3.81 KB lrw-r--r-- 2026-05-21 12:15:23
Edit Download
2.65 KB lrw-r--r-- 2026-05-21 12:15:23
Edit Download
1.77 KB lrw-r--r-- 2026-05-21 12:15:23
Edit Download
1.75 KB lrw-r--r-- 2026-05-21 12:15:23
Edit Download
2.69 KB lrw-r--r-- 2026-05-21 12:15:23
Edit Download
4.06 KB lrw-r--r-- 2026-05-21 12:15:23
Edit Download
1.66 KB lrw-r--r-- 2026-05-21 12:15:23
Edit Download
1.50 KB lrw-r--r-- 2026-05-21 12:15:23
Edit Download
774 B lrw-r--r-- 2026-05-21 12:15:23
Edit Download
1.50 KB lrw-r--r-- 2026-05-21 12:15:23
Edit Download
1.42 KB lrw-r--r-- 2026-05-21 12:15:23
Edit Download
1.26 KB lrw-r--r-- 2026-05-21 12:15:23
Edit Download
2.00 KB lrw-r--r-- 2026-05-21 12:15:23
Edit Download
960 B lrw-r--r-- 2026-05-21 12:15:23
Edit Download
2.92 KB lrw-r--r-- 2026-05-21 12:15:23
Edit Download
705 B lrw-r--r-- 2026-05-21 12:15:23
Edit Download
76 B lrw-r--r-- 2026-05-21 12:15:23
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).