Sha256: c10e6c6b58ff53f68e6079f8abc99b672137656838231044516ae2b6bea0f0c7

Contents?: true

Size: 1.26 KB

Versions: 115

Compression:

Stored size: 1.26 KB

Contents

module Regexp::Expression
  module Shared
    module ClassMethods
      # Convenience method to init a valid Expression without a Regexp::Token
      def construct(params = {})
        attrs = construct_defaults.merge(params)
        options = attrs.delete(:options)
        token_args = Regexp::TOKEN_KEYS.map { |k| attrs.delete(k) }
        token = Regexp::Token.new(*token_args)
        raise ArgumentError, "unsupported attribute(s): #{attrs}" if attrs.any?

        new(token, options)
      end

      def construct_defaults
        if self == Root
          { type: :expression, token: :root, ts: 0 }
        elsif self < Sequence
          { type: :expression, token: :sequence }
        else
          { type: token_class::Type }
        end.merge(level: 0, set_level: 0, conditional_level: 0, text: '')
      end

      def token_class
        if self == Root || self < Sequence
          nil # no token class because these objects are Parser-generated
        # TODO: synch exp class, token class & type names for this in v3.0.0
        elsif self == CharacterType::Any
          Regexp::Syntax::Token::Meta
        else
          Regexp::Syntax::Token.const_get(name.split('::')[2])
        end
      end
    end

    def token_class
      self.class.token_class
    end
  end
end

Version data entries

115 entries across 114 versions & 18 rubygems

Version Path
siteimprove_api_client-1.0.1 vendor/bundle/ruby/3.2.0/gems/regexp_parser-2.10.0/lib/regexp_parser/expression/methods/construct.rb
tailscale_middleware-0.0.3 vendor/cache/ruby/3.4.0/gems/regexp_parser-2.10.0/lib/regexp_parser/expression/methods/construct.rb
trusty-cms-7.0.9.1 vendor/bundle/ruby/3.3.0/gems/regexp_parser-2.9.2/lib/regexp_parser/expression/methods/construct.rb
trusty-cms-7.0.9.1 vendor/bundle/ruby/3.1.0/gems/regexp_parser-2.9.2/lib/regexp_parser/expression/methods/construct.rb
minato_ruby_api_client-0.2.2 vendor/bundle/ruby/3.2.0/gems/regexp_parser-2.9.2/lib/regexp_parser/expression/methods/construct.rb
regexp_parser-2.10.0 lib/regexp_parser/expression/methods/construct.rb
regexp_parser-2.9.3 lib/regexp_parser/expression/methods/construct.rb
blacklight-spotlight-3.6.0.beta8 vendor/bundle/ruby/3.2.0/gems/regexp_parser-2.9.2/lib/regexp_parser/expression/methods/construct.rb
katalyst-govuk-formbuilder-1.9.2 vendor/bundle/ruby/3.3.0/gems/regexp_parser-2.9.2/lib/regexp_parser/expression/methods/construct.rb
harbr-2.8.1 vendor/bundle/ruby/3.2.0/gems/regexp_parser-2.8.2/lib/regexp_parser/expression/methods/construct.rb
bison-0.1.0 vendor/bundle/ruby/3.2.0/gems/regexp_parser-2.9.0/lib/regexp_parser/expression/methods/construct.rb
mlh-rubocop-config-1.0.3 vendor/bundle/ruby/3.2.0/gems/regexp_parser-2.9.0/lib/regexp_parser/expression/methods/construct.rb
study_line-0.2.7 vendor/bundle/ruby/3.2.0/gems/regexp_parser-2.9.0/lib/regexp_parser/expression/methods/construct.rb
study_line-0.2.6 vendor/bundle/ruby/3.2.0/gems/regexp_parser-2.9.0/lib/regexp_parser/expression/methods/construct.rb
study_line-0.2.5 vendor/bundle/ruby/3.2.0/gems/regexp_parser-2.9.0/lib/regexp_parser/expression/methods/construct.rb
study_line-0.2.4 vendor/bundle/ruby/3.2.0/gems/regexp_parser-2.9.0/lib/regexp_parser/expression/methods/construct.rb
study_line-0.2.3 vendor/bundle/ruby/3.2.0/gems/regexp_parser-2.9.0/lib/regexp_parser/expression/methods/construct.rb
study_line-0.2.2 vendor/bundle/ruby/3.2.0/gems/regexp_parser-2.9.0/lib/regexp_parser/expression/methods/construct.rb
study_line-0.2.1 vendor/bundle/ruby/3.2.0/gems/regexp_parser-2.9.0/lib/regexp_parser/expression/methods/construct.rb
study_line-0.2.0 vendor/bundle/ruby/3.2.0/gems/regexp_parser-2.9.0/lib/regexp_parser/expression/methods/construct.rb