Class: BELParser::Language::ExpressionValidator::NestedStatementResult

Inherits:
Object
  • Object
show all
Includes:
Result
Defined in:
lib/bel_parser/language/expression_validator.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Result

#invalid_signature_mappings, #valid_signature_mappings

Constructor Details

#initialize(expression_node, subject_result, object_result, syntax, semantics) ⇒ NestedStatementResult

Returns a new instance of NestedStatementResult.



374
375
376
377
378
379
380
381
382
383
384
# File 'lib/bel_parser/language/expression_validator.rb', line 374

def initialize(expression_node, subject_result, object_result, syntax, semantics)
  @expression_node   = expression_node
  @subject_result    = subject_result
  @object_result     = object_result
  @syntax_results    = syntax
  @semantics_results =
    semantics.reject! do |res|
      res.is_a?(Semantics::SignatureMappingWarning) ||
      res.is_a?(Semantics::SignatureMappingSuccess)
    end
end

Instance Attribute Details

#semantics_resultsObject (readonly)

Returns the value of attribute semantics_results.



371
372
373
# File 'lib/bel_parser/language/expression_validator.rb', line 371

def semantics_results
  @semantics_results
end

#syntax_resultsObject (readonly)

Returns the value of attribute syntax_results.



371
372
373
# File 'lib/bel_parser/language/expression_validator.rb', line 371

def syntax_results
  @syntax_results
end

Instance Method Details

#detailObject



447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
# File 'lib/bel_parser/language/expression_validator.rb', line 447

def detail
  report = "Subject term - Valid signatures\n"
  @subject_result.valid_signature_mappings.each do |mapping|
    report += "  #{mapping.signature}\n"
    mapping.results.each do |reason|
      report += "    #{reason}\n"
    end
  end
  report += "\n"

  report += "Subject term - Invalid signatures\n"
  @subject_result.invalid_signature_mappings.each do |mapping|
    report += "  #{mapping.signature}\n"
    mapping.results.each do |reason|
      report += "    #{reason}\n"
    end
  end
  report += "\n"

  report += @object_result.detail
  report
end

#invalid_object_signaturesObject



431
432
433
434
435
436
# File 'lib/bel_parser/language/expression_validator.rb', line 431

def invalid_object_signatures
  @object_result.semantics_results
    .select do |res|
      res.is_a?(Semantics::SignatureMappingWarning)
    end
end

#invalid_subject_signaturesObject



417
418
419
420
421
422
# File 'lib/bel_parser/language/expression_validator.rb', line 417

def invalid_subject_signatures
  @subject_result.semantics_results
    .select do |res|
      res.is_a?(Semantics::SignatureMappingWarning)
    end
end

#object_valid?Boolean

Returns:

  • (Boolean)


406
407
408
# File 'lib/bel_parser/language/expression_validator.rb', line 406

def object_valid?
  @object_result.valid?
end

#subject_valid?Boolean

Returns:

  • (Boolean)


402
403
404
# File 'lib/bel_parser/language/expression_validator.rb', line 402

def subject_valid?
  @subject_result.valid?
end

#to_sObject



438
439
440
441
442
443
444
445
# File 'lib/bel_parser/language/expression_validator.rb', line 438

def to_s
  "Syntax:    \#{valid_syntax?    ? 'Valid' : 'Invalid'}\nSemantics: \#{valid_semantics? ? 'Valid' : 'Invalid'}\n\n\#{syntax_errors_s}\#{semantics_errors_s}\#{detail}\n".gsub(/^ {12}/, '')
end

#valid?Boolean

Returns:

  • (Boolean)


386
387
388
# File 'lib/bel_parser/language/expression_validator.rb', line 386

def valid?
  valid_syntax? && valid_semantics?
end

#valid_object_signaturesObject



424
425
426
427
428
429
# File 'lib/bel_parser/language/expression_validator.rb', line 424

def valid_object_signatures
  @object_result.semantics_results
    .select do |res|
      res.is_a?(Semantics::SignatureMappingSuccess)
    end.uniq
end

#valid_semantics?Boolean

Returns:

  • (Boolean)


396
397
398
399
400
# File 'lib/bel_parser/language/expression_validator.rb', line 396

def valid_semantics?
  @subject_result.valid_semantics? &&
    @object_result.valid_semantics? &&
    @semantics_results.empty?
end

#valid_subject_signaturesObject



410
411
412
413
414
415
# File 'lib/bel_parser/language/expression_validator.rb', line 410

def valid_subject_signatures
  @subject_result.semantics_results
    .select do |res|
      res.is_a?(Semantics::SignatureMappingSuccess)
    end.uniq
end

#valid_syntax?Boolean

Returns:

  • (Boolean)


390
391
392
393
394
# File 'lib/bel_parser/language/expression_validator.rb', line 390

def valid_syntax?
  @subject_result.valid_syntax? &&
    @object_result.valid_syntax? &&
    @syntax_results.empty?
end