Sha256: 42c5bcd92ec24d97020394d5e9f11f8a423e354eba0b56a7928ec96344f740fe
Contents?: true
Size: 611 Bytes
Versions: 16
Compression:
Stored size: 611 Bytes
Contents
# frozen_string_literal: true module Unparser class Emitter # Emitter for key value pairs in hash literals or kwargs class Pair < self BAREWORD = /\A[A-Za-z_][A-Za-z_0-9]*[?!]?\z/.freeze private_constant(*constants(false)) handle :pair children :key, :value private def dispatch if colon?(key) write(key.children.first.to_s, ': ') else visit(key) write(' => ') end visit(value) end def colon?(key) n_sym?(key) && BAREWORD.match?(key.children.first) end end end end
Version data entries
16 entries across 16 versions & 2 rubygems