Module: SyntaxTree::HashKeyFormatter
- Defined in:
- lib/syntax_tree/node.rb
Overview
This module is responsible for formatting the assocs contained within a hash or bare hash. It first determines if every key in the hash can use labels. If it can, it uses labels. Otherwise it uses hash rockets.
Defined Under Namespace
Class Method Summary collapse
Class Method Details
.for(container) ⇒ Object
1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 |
# File 'lib/syntax_tree/node.rb', line 1690 def self.for(container) labels = container.assocs.all? do |assoc| next true if assoc.is_a?(AssocSplat) case assoc.key when Label true when SymbolLiteral # When attempting to convert a hash rocket into a hash label, # you need to take care because only certain patterns are # allowed. Ruby source says that they have to match keyword # arguments to methods, but don't specify what that is. After # some experimentation, it looks like it's: value = assoc.key.value.value value.match?(/^[_A-Za-z]/) && !value.end_with?("=") when DynaSymbol true else false end end (labels ? Labels : Rockets).new end |