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.
253 254 255 256 257 258 259 260 261 262 263 264 265 266 |
# File 'lib/abide_dev_utils/cem/generate/reference.rb', line 253 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.
296 297 298 299 300 301 |
# File 'lib/abide_dev_utils/cem/generate/reference.rb', line 296 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.
308 309 310 311 312 |
# File 'lib/abide_dev_utils/cem/generate/reference.rb', line 308 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.
272 273 274 275 276 277 278 |
# File 'lib/abide_dev_utils/cem/generate/reference.rb', line 272 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.
317 318 319 |
# File 'lib/abide_dev_utils/cem/generate/reference.rb', line 317 def self.type_expr_placeholder(type_expr) "<<Type #{type_expr}>>" end |
.undef?(value) ⇒ Boolean
Checks if a value is considered undef.
283 284 285 |
# File 'lib/abide_dev_utils/cem/generate/reference.rb', line 283 def self.undef?(value) value.nil? || value == UNDEF_VAL end |