Class: ActiveFacts::Metamodel::RoleRef
- Inherits:
-
Object
- Object
- ActiveFacts::Metamodel::RoleRef
- Defined in:
- lib/activefacts/metamodel/metamodel.rb,
lib/activefacts/metamodel/extensions.rb
Instance Method Summary collapse
- #cql_leading_adjective ⇒ Object
- #cql_name ⇒ Object
- #cql_trailing_adjective ⇒ Object
- #describe ⇒ Object
- #preferred_reference ⇒ Object
- #role_name(separator = "-") ⇒ Object
Instance Method Details
#cql_leading_adjective ⇒ Object
421 422 423 424 425 426 427 428 429 430 431 432 433 |
# File 'lib/activefacts/metamodel/extensions.rb', line 421 def cql_leading_adjective if leading_adjective # 'foo' => "foo-" # 'foo bar' => "foo- bar " # 'foo-bar' => "foo-- bar " # 'foo-bar baz' => "foo-- bar baz " # 'bat foo-bar baz' => "bat- foo-bar baz " leading_adjective.strip. sub(/[- ]|$/, '-\0 ').sub(/ /, ' ').sub(/[^-]$/, '\0 ').sub(/- $/,'-') else '' end end |
#cql_name ⇒ Object
453 454 455 456 457 458 459 460 461 462 463 464 |
# File 'lib/activefacts/metamodel/extensions.rb', line 453 def cql_name if role.fact_type.all_role.size == 1 role_name elsif role.role_name role.role_name else # Where an adjective has multiple words, the hyphen is inserted outside the outermost space, leaving the space cql_leading_adjective + role.object_type.name+ cql_trailing_adjective end end |
#cql_trailing_adjective ⇒ Object
435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 |
# File 'lib/activefacts/metamodel/extensions.rb', line 435 def cql_trailing_adjective if trailing_adjective # 'foo' => "-foo" # 'foo bar' => " foo -bar" # 'foo-bar' => " foo --bar" # 'foo-bar baz' => " foo-bar -baz" # 'bat foo-bar baz' => " bat foo-bar -baz" trailing_adjective. strip. sub(/(?<a>.*) (?<b>[^- ]+$)|(?<a>.*)(?<b>-[^- ]*)$|(?<a>)(?<b>.*)/) { " #{$~[:a]} -#{$~[:b]}" }. sub(/^ *-/, '-') # A leading space is not needed if the hyphen is at the start else '' end end |
#describe ⇒ Object
398 399 400 |
# File 'lib/activefacts/metamodel/extensions.rb', line 398 def describe role.name + " in (#{role.fact_type.default_reading})" end |
#preferred_reference ⇒ Object
402 403 404 |
# File 'lib/activefacts/metamodel/extensions.rb', line 402 def preferred_reference role.preferred_reference end |
#role_name(separator = "-") ⇒ Object
406 407 408 409 410 411 412 413 414 415 416 417 418 419 |
# File 'lib/activefacts/metamodel/extensions.rb', line 406 def role_name(separator = "-") return 'UNKNOWN' unless role name_array = if role.fact_type.all_role.size == 1 if role.fact_type.is_a?(LinkFactType) "#{role.object_type.name} objectification role for #{role.fact_type.role.object_type.name}" else role.fact_type.preferred_reading.text.gsub(/\{[0-9]\}/,'').strip.split(/\s/) end else role.role_name || [leading_adjective, role.object_type.name, trailing_adjective].compact.map{|w| w.split(/\s/)}.flatten end return separator ? Array(name_array)*separator : Array(name_array) end |