Looplex Knowledge Base
Grammar
O tube grammar flexiona palavras em gênero (feminino ou masculino) e número (singular ou plural) de acordo com a variável com a qual estão associadas. Para que seja feita a flexão de número, a variável deve ser do tipo Integer ou um vetor, fazendo com que a palavra seja flexionada conforme o número da variável Integer ou o número de elementos do vetor. Para que seja feita a flexão de gênero, a variável deve ser do tipo List ou Struct. Nesse último, deverá conter um campo do tipo List com opção de lista que permita a flexão de gênero (o alias do campo deve ser obrigatoriamente "genero" ou "gender"). É importante mencionar que o tube grammar não funciona se a palavra a ser flexionada não constar no dicionário gramatical Looplex. Caso deseje incluir novas opções ao dicionário, entre em contato com nossa equipe de Suporte, enviando os termos a serem incorporados.
Formato:
<varGen>.grammar(string)<varNum>.grammar(string)|vector|.grammar(string)
Parâmetros:
- varGen: variável que permita flexão de gênero. Pode ser do tipo List ou Struct contendo necessariamente um campo do tipo List. A lista que permite a flexão de gênero deve obrigatoriamente conter uma opção que designe a flexão feminina. As opções de lista reconhecidas pelo tube são: "Feminino", "feminino", "FEMININO", "Female", "female", "FEMALE", "F" ou "f".
- varNum: variável do tipo Integer que permita flexão de número.
- vector: vetor de qualquer tipo, permitindo flexão de número. Adicionalmente, quando for vetor do tipo Struct, é possível fazer também flexão de gênero.
- string: palavra ou palavras a serem flexionadas em número e/ou gênero. Pode ser uma variável do tipo String informada pelo usuário ou um texto fixo inserido diretamente no sistema. Nesse caso específico, deverá estar no masculino singular.
Retorno:
A palavra ou palavras com a devida flexão de gênero e/ou número.
Exemplo:
- Grammar flexionando gênero com List. É possível fazer a flexão de gênero a partir de uma variável do tipo List. Considere que se deseja flexionar o gênero do patrono de uma empresa a partir da variável
<genero>
, do tipo List.
declarations { +<genero> : List ("Feminino", "Masculino") { name = "Gênero" request = "Indique o gênero da pessoa" help = "A indicação de gênero é importante para que sejam feitas as flexões gramaticais corretas." atomic = true }}operations { print "Por fim, requer que futuras intimações e publicações sejam realizadas exclusivamente em nome " & <genero>.grammar("do patrono") & " da Reclamada."}
- Grammar flexionando gênero com Struct. O tube também consegue fazer a flexão de gênero a partir de structs. Considere uma struct de qualificação do procurador de uma empresa, contendo o campo
[genero]
e o campo[cargo]
, uma lista atômica com as opções de cargo do procurador dentro da empresa. Serão feitas as flexões de "seu" e de[cargo]
a partir da variável<procurador>
.
declarations { +<procurador> : struct[Procurador] { name = "Procurador" fields { +[nome] : String { name = "Nome do procurador" request = "Informe o nome do procurador" }, +[genero] : List ("Feminino", "Masculino") { name = "Gênero" request = "Indique o gênero do procurador" help = "A indicação de gênero é importante para que sejam feitas as flexões gramaticais corretas." atomic = true }, +[cargo] : List ("Administrador", "Conselheiro", "Diretor") { name = "Cargo" request = "Indique o cargo do procurador na empresa" atomic = true } } }}operations { print "Representando a empresa, " & <procurador>.grammar("seu") & " " & <procurador>.grammar(<procurador.cargo>) & ", " & <procurador.nome> & "."}
- Grammar flexionando número com Integer. É possível, ainda, utilizá-lo a partir de uma variável ou campo do tipo Integer. Considere a struct
<dadosDaCompra>
com o campo[numeroDeProdutos]
designando o número de produtos adquiridos.
declarations { +<dadosDaCompra> : struct[DadosDaCompra] { name = "Dados da compra" fields { +[numeroDeProdutos] : Integer { name = "Número de produtos adquiridos" request = "Informe o número de produtos adquiridos" } } }}operations { print "Foi realizada a compra de " & <dadosDaCompra.numeroDeProdutos> & " " & <dadosDaCompra.numeroDeProdutos>.grammar("produto") & "."}
- Grammar flexionando gênero e número com vetor. Algumas flexões são utilizadas com muita frequência para termos repetidos no código, como "o Autor". Para esses casos, é possível atribuir o retorno do tube a uma variável oculta do tipo String, como
<printOAutor>
, e utilizá-la repetidas vezes no texto. Considere, assim, o vetor do tipo Struct|autores|
, contendo o campo[genero]
descrito anteriormente. Ao flexionar a expressão "o Autor", é possível obter as variações: "o Autor", "os Autores", "a Autora" ou "as Autoras".
declarations { struct[Autores] { name = "Autores" fields { +[genero] : List ("Feminino", "Masculino") { name = "Gênero" request = "Indique o gênero do autor" help = "A indicação de gênero é importante para que sejam feitas as flexões gramaticais corretas." atomic = true } } }, +|autores| : Vector[Autores], -<printOAutor> : String}operations { <printOAutor> = |autores|.grammar("o Autor"), print "Importante destacar que, caso " & <printOAutor> & " " & |autores|.grammar("tenha") & " ganho de causa, esta Requerida será obrigada a cumprir uma sentença injusta, acarretando enriquecimento sem causa d" & <printOAutor> & "."}
Edit this page on GitHubDica: PrintIf em substituição ao grammar. Como dito no início, algumas palavras não constam no dicionário gramatical Looplex. Para esses casos, enquanto estiver em análise eventual pedido de inclusão de termo, é possível utilizar o tube printIf para realizar a flexão gramatical.