Class: AbideDevUtils::CEM::Generate::Reference::TypeExprValueFormatter
- Inherits:
-
Object
- Object
- AbideDevUtils::CEM::Generate::Reference::TypeExprValueFormatter
- Defined in:
- lib/abide_dev_utils/cem/generate/reference.rb
Overview
Holds methods for formmating values based on type expressions
Constant Summary collapse
- UNDEF_VAL =
'undef'
Class Method Summary collapse
-
.format(value, type_expr, optional_strategy: :undef) ⇒ Any
Formats a value based on a type expression.
-
.optional(value, type_expr, strategy: :undef) ⇒ String, Any
Returns the display representation of the value with an Optional type expression.
-
.peel_type_expr(type_expr) ⇒ String
Returns a “peeled” type expression.
-
.quote(value) ⇒ String, Any
Escapes and quotes a string.
-
.type_expr_placeholder(type_expr) ⇒ String
Formats the type expression as a placeholder.
-
.undef?(value) ⇒ Boolean
Checks if a value is considered undef.
Class Method Details
.format(value, type_expr, optional_strategy: :undef) ⇒ Any
Formats a value based on a type expression.
490 491 492 493 494 495 496 497 498 499 500 501 502 503 |
# File 'lib/abide_dev_utils/cem/generate/reference.rb', line 490 def self.format(value, type_expr, optional_strategy: :undef) return value if value == 'No parameters' case type_expr when /^(String|Stdlib::(Unix|Windows|Absolute)path|Enum)/ quote(value) when /^Optional\[/ optional(value, type_expr, strategy: optional_strategy) else return type_expr_placeholder(type_expr) if value.nil? quote(value) end end |
.optional(value, type_expr, strategy: :undef) ⇒ String, Any
Returns the display representation of the value with an Optional type expression. If the value is not nil or ‘undef’, returns the quoted form of the value.
533 534 535 536 537 538 |
# File 'lib/abide_dev_utils/cem/generate/reference.rb', line 533 def self.optional(value, type_expr, strategy: :undef) return UNDEF_VAL if undef?(value) && strategy == :undef return type_expr_placeholder(peel_type_expr(type_expr)) if undef?(value) && strategy == :placeholder quote(value) end |
.peel_type_expr(type_expr) ⇒ String
Returns a “peeled” type expression. Peeling a type expression removes the first layer of the type expression. For example, if the type expression is Optional, the peeled type expression is String.
545 546 547 548 549 |
# File 'lib/abide_dev_utils/cem/generate/reference.rb', line 545 def self.peel_type_expr(type_expr) return type_expr unless type_expr.include?('[') type_expr.match(/^[A-Z][a-z0-9_]*\[(?<peeled>[A-Za-z0-9:,_{}=>\[\]\\\s]+)\]$/)[:peeled] end |
.quote(value) ⇒ String, Any
Escapes and quotes a string. If value is not a string, returns value.
509 510 511 512 513 514 515 |
# File 'lib/abide_dev_utils/cem/generate/reference.rb', line 509 def self.quote(value) if value.is_a?(String) value.inspect else value end end |
.type_expr_placeholder(type_expr) ⇒ String
Formats the type expression as a placeholder.
554 555 556 |
# File 'lib/abide_dev_utils/cem/generate/reference.rb', line 554 def self.type_expr_placeholder(type_expr) "<<Type #{type_expr}>>" end |
.undef?(value) ⇒ Boolean
Checks if a value is considered undef.
520 521 522 |
# File 'lib/abide_dev_utils/cem/generate/reference.rb', line 520 def self.undef?(value) value.nil? || value == UNDEF_VAL end |