class ActiveFacts::Metamodel::RoleRef
Public Instance Methods
cql_leading_adjective()
click to toggle source
# File lib/activefacts/metamodel/extensions.rb, line 420 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()
click to toggle source
# File lib/activefacts/metamodel/extensions.rb, line 452 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()
click to toggle source
# File lib/activefacts/metamodel/extensions.rb, line 434 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()
click to toggle source
# File lib/activefacts/metamodel/extensions.rb, line 397 def describe role.name + " in (#{role.fact_type.default_reading})" end
preferred_reference()
click to toggle source
# File lib/activefacts/metamodel/extensions.rb, line 401 def preferred_reference role.preferred_reference end
role_name(separator = "-")
click to toggle source
# File lib/activefacts/metamodel/extensions.rb, line 405 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