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
1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 |
# File 'lib/syntax_tree/node.rb', line 1450 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 |