Sha256: 77ced605f053e794598ad08c9c1931d46ca3a09233df520785a3c1b8bba87c35
Contents?: true
Size: 1.25 KB
Versions: 9
Compression:
Stored size: 1.25 KB
Contents
# frozen_string_literal: true module Unparser module NodeDetails class Send include NodeDetails ASSIGN_SUFFIX = '='.freeze NON_ASSIGN_RANGE = (0..-2).freeze private_constant(*constants(false)) children :receiver, :selector public :receiver, :selector def selector_binary_operator? BINARY_OPERATORS.include?(selector) end def binary_syntax_allowed? selector_binary_operator? && arguments.one? && !n_splat?(arguments.first) end def selector_unary_operator? UNARY_OPERATORS.include?(selector) end def assignment_operator? assignment? && !selector_binary_operator? && !selector_unary_operator? end def arguments? arguments.any? end def non_assignment_selector if assignment? string_selector[NON_ASSIGN_RANGE] else string_selector end end def assignment? string_selector[-1].eql?(ASSIGN_SUFFIX) end memoize :assignment? def arguments children[2..-1] end memoize :arguments def string_selector selector.to_s end memoize :string_selector end # Send end # NodeDetails end # Unparser
Version data entries
9 entries across 9 versions & 1 rubygems