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
1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 |
# File 'lib/syntax_tree/node.rb', line 1440 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 |