Remove tokens

When getting code with
METHOD GET CODE ( $path ; $code ; Code with tokens)
lines of code show the tokens, like this:
Code :
Case of
: (Form event:C388=On Load:K2:1)
ALL RECORDS:C47([Customer:1])
End case

The following function allows to remove tokens of such lines

<code 4D>
//Doa_tokensRemove (code_t {;option_lb) -> txt
//removes tokens in line of code $1
//$2 option:
// 1 (default) = remove token only
// ex :"(Form event:C388=On Load:K2:1)" --> “(Form event=On Load)”
// 0 = remove token and preceeding text
// ex :"(Form event:C388=On Load:K2:1)" --> “(=)”

C_TEXTE($0;$1)
C_ENTIER LONG($2;$remove_l)

C_TEXTE($out_t;$in_t)

TABLEAU ENTIER LONG($pos_al;0)
TABLEAU ENTIER LONG($len_al;0)

$out_t:=$1
$remove_l:=1 //remove token only
Si (Nombre de paramètres>1)
$remove_l:=Choisir($2;0;1) //only 0 or 1 accepted
Fin de si

//command 4D - CommandName:C123
Si ($out_t#"")
$rx_t:="[\w ]{1,31}(:C\d{1,4})"
$start_l:=1
Tant que (Trouver regex($rx_t;$out_t;$start_l;$pos_al;$len_al))
$out_t:=Supprimer chaîne($out_t;$pos_al{$remove_l};$len_al{$remove_l})
$start_l:=$pos_al{0}
Fin tant que
Fin de si

//constant - ConstantName:K123:456
Si ($out_t#"")
$rx_t:="[A-Za-z][\w ]{1,31}(:K\d{1,4}:\d{1,4})"
$start_l:=1
Tant que (Trouver regex($rx_t;$out_t;$start_l;$pos_al;$len_al))
$out_t:=Supprimer chaîne($out_t;$pos_al{$remove_l};$len_al{$remove_l})
$start_l:=$pos_al{0}
Fin tant que
Fin de si

//[TABLE]field - [TableName:123]field:456
Si ($out_t#"")
$rx_t:="\[\w{1,31}(:\d{1,4})]\w{1,31}(:\d{1,4})"
$start_l:=1
Tant que (Trouver regex($rx_t;$out_t;$start_l;$pos_al;$len_al))
Si ($remove_l=0)
$out_t:=Supprimer chaîne($out_t;$pos_al{$remove_l};$len_al{$remove_l})
Sinon
$out_t:=Supprimer chaîne($out_t;$pos_al{2};$len_al{2}) //field
$out_t:=Supprimer chaîne($out_t;$pos_al{$remove_l};$len_al{$remove_l}) //table
Fin de si
$start_l:=$pos_al{0}
Fin tant que
Fin de si

//[TABLE] - [TableName:123]
Si ($out_t#"")
$rx_t:="\[\w{1,31}(:\d{1,4})]"
$start_l:=1
Tant que (Trouver regex($rx_t;$out_t;$start_l;$pos_al;$len_al))
$out_t:=Supprimer chaîne($out_t;$pos_al{$remove_l};$len_al{$remove_l})
$start_l:=$pos_al{0}
Fin tant que
Fin de si

$0:=$out_t
//_
</code 4D>

Hi Arnaud,

crazy question, just to understand: why don’t you reread the method without asking the token? It is slower than your method?

Tout juste, sans le contexte ça n’est pas clair.
Note que ça n’enlève pas le token, mais le token ET le texte qui va avec (enfin, supposé le faire, je viens de voir un bugalacon).
Code :
$position:=Position:C15("/";$chaine) ----> $position:=("/";$chaine)
Dans la recherche 4D les éléments tokenisés (commandes, constantes, tables, champs) polluent souvent le résultat. J’ai une recherche dans le code dont je peux les exclure. Avec les tokens il est plus simple de les répérer et de les enlever, ne reste plus qu’à chercher dans la chaine réduite. Tiens, ça va peut-être me servir https://forums.4d.com/Post/FR/29909052/1/29909469#29909469là>, d’ailleurs…

oui tout à fait, j’ai fais un truc dans le même genre pour la recherche des variables dans le code.
Je me suis aussi fait un catalogue des functions pour les collections et ORDA de manière à simplifier au max.
Regarde ce que je t’ai envoyé en MP.

Patrick

: Patrick EMANUEL

catalogue des functions pour les collections et ORDA
Je ne vois rien dans Resources ; j’arrête l’alcool, ou c’est ailleurs ?

Bonsoir Arnaud,

oui c’est ailleurs, dans le code. Je n’ai pas trouvé de catalogue de ces fonctions. Je pense que cela est hard coded dans 4D et donc du coup, chez moi aussi => revue de la méthode à chaque nouvelle version de 4D :frowning:

J’ai https://forums.4d.com/Post/FR/28304211/1/28321603#28361026ça>, à tout hasard. Collecté à la main par copier coller doc html vers le txt libre office. Les liens y restant opérationnels, je me disais que ce serait pratique, mais je me demande si ça m’a jamais servi. Dans le même fil Vincent parle d’autocomplétion à venir, il y a des chances qu’on trouve alors de quoi nous bâfrer dans les entrailles de la bête.

Je m’en suis inspiré et j’ai complété avec la doc de la 17R5

<code 4D>
// Remove all keywords for Collection
$MethText:=Replace string($MethText;".length";"(")
$MethText:=Replace string($MethText;".average(";"(") // common with EntitySelection
$MethText:=Replace string($MethText;".clear(";"")
$MethText:=Replace string($MethText;".combine(";"(")
$MethText:=Replace string($MethText;".concat(";"(")
$MethText:=Replace string($MethText;".copy(";"(")
$MethText:=Replace string($MethText;".countValues(";"(")
$MethText:=Replace string($MethText;".count(";"(") // common with EntitySelection
$MethText:=Replace string($MethText;".distinct(";"(") // common with entitySelection
$MethText:=Replace string($MethText;".equal(";"(")
$MethText:=Replace string($MethText;".every(";"(")
$MethText:=Replace string($MethText;".extract(";"(")
$MethText:=Replace string($MethText;".fill(";"(")
$MethText:=Replace string($MethText;".filter(";"(")
$MethText:=Replace string($MethText;".find(";"(")
$MethText:=Replace string($MethText;".findIndex(";"(")
$MethText:=Replace string($MethText;".IndexOf(";"(") // common with Entity
$MethText:=Replace string($MethText;".lastIndexOf(";"(")
$MethText:=Replace string($MethText;".indices(";"(")
$MethText:=Replace string($MethText;".insert(";"(")
$MethText:=Replace string($MethText;".join(";"(")
$MethText:=Replace string($MethText;".map(";"(")
$MethText:=Replace string($MethText;".max(";"(") // Common with EntitySelection
$MethText:=Replace string($MethText;".min(";"(") // Common with EntitySelection
$MethText:=Replace string($MethText;".orderBy(";"(") // Common with EntitySelection
$MethText:=Replace string($MethText;".orderByMethod(";"(")
$MethText:=Replace string($MethText;".pop(";"(")
$MethText:=Replace string($MethText;".push(";"(")
$MethText:=Replace string($MethText;".query(";"(") // Common with EntitySelection & DataClass
$MethText:=Replace string($MethText;".reduce(";"(")
$MethText:=Replace string($MethText;".remove(";"(")
$MethText:=Replace string($MethText;".resize(";"(")
$MethText:=Replace string($MethText;".reverse(";"(")
$MethText:=Replace string($MethText;".unshift(";"(")
$MethText:=Replace string($MethText;".shift(";"(")
$MethText:=Replace string($MethText;".slice(";"(") // Common with EntitySelection
$MethText:=Replace string($MethText;".some(";"(") // Common with EntitySelection
$MethText:=Replace string($MethText;".sort(";"(")
$MethText:=Replace string($MethText;".sum(";"(")

// Remove all keywords for DataStore
$MethText:=Replace string($MethText;“ds.encryptionStatus(”;"")
$MethText:=Replace string($MethText;“ds.getInfo(”;"")
$MethText:=Replace string($MethText;“ds.provideDataKey(”;"")

// Remove all keywords for Entity
$MethText:=Replace string($MethText;".clone(";"(")
$MethText:=Replace string($MethText;".diff(";"(")
$MethText:=Replace string($MethText;".drop(";"(") // Common with EntitySelection
$MethText:=Replace string($MethText;".first(";"(") // Common with EntitySelection
$MethText:=Replace string($MethText;".fromObject(";"(")
$MethText:=Replace string($MethText;".getKey(";"(")
$MethText:=Replace string($MethText;".getDataClass(";"(") // Common with EntitySelection
$MethText:=Replace string($MethText;".getSelection(";"(")
$MethText:=Replace string($MethText;".getStamp(";"(")
$MethText:=Replace string($MethText;".isNew(";"(")
$MethText:=Replace string($MethText;".last(";"(") // Common with EntitySelection
$MethText:=Replace string($MethText;".unlock(";"(")
$MethText:=Replace string($MethText;".lock(";"(")
$MethText:=Replace string($MethText;".next(";"(")
$MethText:=Replace string($MethText;".previous(";"(")
$MethText:=Replace string($MethText;".reload(";"(")
$MethText:=Replace string($MethText;".save(";"(")
$MethText:=Replace string($MethText;".toObject(";"(")
$MethText:=Replace string($MethText;".touchedAttributes(";"(")
$MethText:=Replace string($MethText;".touched(";"(")

// Remove all keywords for EntitySelection
$MethText:=Replace string($MethText;".add(";"(")
$MethText:=Replace string($MethText;".and(";"(")
$MethText:=Replace string($MethText;".contains(";"(")
$MethText:=Replace string($MethText;".isOrdered(";"(")
$MethText:=Replace string($MethText;".minus(";"(")
$MethText:=Replace string($MethText;".or(";"(")
$MethText:=Replace string($MethText;".toSelection(";"(")

// Remove all keyword for DataClass
$MethText:=Replace string($MethText;".all(";"(")
$MethText:=Replace string($MethText;".fromCollection(";"(")
$MethText:=Replace string($MethText;".get(";"(")
$MethText:=Replace string($MethText;".getDataStore(";"(")
$MethText:=Replace string($MethText;".getInfo(";"(")
$MethText:=Replace string($MethText;".new(";"(")
$MethText:=Replace string($MethText;".newSelection(";"(")

// Remove all keyword for DataClassAttribute
$MethText:=Replace string($MethText;".autoFilled";"")
$MethText:=Replace string($MethText;".fieldNumber";"")
$MethText:=Replace string($MethText;".fieldType";"")
$MethText:=Replace string($MethText;".indexed";"")
$MethText:=Replace string($MethText;".inverseName";"")
$MethText:=Replace string($MethText;".keyWordIndexed";"")
$MethText:=Replace string($MethText;".kind";"")
$MethText:=Replace string($MethText;".mandatory";"")
$MethText:=Replace string($MethText;".name";"")
$MethText:=Replace string($MethText;".relatedDataClass";"")
$MethText:=Replace string($MethText;".type";"")
$MethText:=Replace string($MethText;".unique";"")

</code 4D>

Patrick