[Home]ModèleDeLien

MeatballWiki | RecentChanges | Random Page | Indices | Categories

Cette page a démarré sur LinkPattern (seul lien de référence)

Pour un wiki, c'est la "RegularExpression" que le script cherche pour déterminer quel texte produit un lien.

Voir en anglais LinkPatternSuggestions pour des modifications suggérées ou des ajouts aux ModèleDeLien de ce wiki.

DossierTechnologieWiki DossierSchémaIndexation


Pour ceux qui connaissent Perl, les LinkPattern(s) de ce wiki sont :

# Current for UseModWiki/MeatballWiki 0.8.8
$UseSubpage  = 0;       # 1 = use subpages,       0 = do not use subpages
$SimpleLinks = 1;       # 1 = only letters,       0 = allow _ and numbers
$NonEnglish  = 1;       # 1 = extra link chars,   0 = only A-Za-z chars

sub InitLinkPatterns {
  my ($UpperLetter, $LowerLetter, $AnyLetter, $LpA, $LpB, $QDelim);

  $UpperLetter = "[A-Z";
  $LowerLetter = "[a-z";
  $AnyLetter   = "[A-Za-z";

  if ($NonEnglish) {
    $UpperLetter .= "\xc0-\xde";
    $LowerLetter .= "\xdf-\xff";
    $AnyLetter   .= "\xc0-\xff";
  }
  if (!$SimpleLinks) {
    $AnyLetter .= "_0-9";
  }
  $UpperLetter .= "]"; $LowerLetter .= "]"; $AnyLetter .= "]";

  # Main link pattern: lowercase between uppercase, then anything
  $LpA = $UpperLetter . "+" . $LowerLetter . "+" . $UpperLetter
         . $AnyLetter . "*";
  # Optional subpage link pattern: uppercase, lowercase, then anything
  $LpB = $UpperLetter . "+" . $LowerLetter . "+" . $AnyLetter . "*";

  if ($UseSubpage) {
    # Loose pattern: If subpage is used, subpage may be simple name
    $LinkPattern = "((($LpA)?\\/$LpB)|$LpA)";
    # Strict pattern: both sides must be the main LinkPattern
    # $LinkPattern = "((($LpA)?\\/)?$LpA)";
  } else {
    $LinkPattern = "($LpA)";
  }
  $QDelim = '("")?';     # Optional quote delimiter (not in output)
  $LinkPattern .= $QDelim;

  # Url-style links are delimited by one of:
  #   1.  Whitespace (kept in output)
  #   2.  Left angle-bracket (<)  (kept in output)
  #   3.  A single double-quote (")  (kept in output)
  #   4.  A double double-quote ("") (removed from output)

  # Inter-site convention: sites must start with uppercase letter
  # (Uppercase letter avoids confusion with URLs)
  $InterSitePattern = $UpperLetter . $AnyLetter . "+";
  $InterLinkPattern = "(($InterSitePattern:[^\\s\"<]+)$QDelim)";
  $UrlProtocols = "(http|ftp|afs|news|nntp|mid|cid|mailto|wais|"
                  . "prospero|telnet|gopher)";
  $UrlPattern = "((($UrlProtocols):[^\\s\"<]+)$QDelim)";
  $ImageExtensions = "(gif|jpg|png|bmp|jpeg)";
  $RFCPattern = "RFC\\s?(\\d+)";
  $ISBNPattern = "ISBN:?([0-9- xX]{10,})";
}


Pour les autres 98% qui ne lisent pas les "regular expressions" de Perl, le modèle Meatball est :

Une ou plus lettres capitales, puis une ou plus lettres en bas de casse, puis une lettre capitale, puis "n'importe quelles lettres" (qu'elle soit en capitale ou bas de casse). (Pour les wikis non-Meatball utilisant UseModWiki, "n'importe quelles lettres" peut comprendre des soulignés et nombres.)

Le ModèleDeLien de UseMod est à bon escient plus lâche que celui de WikiWiki, essentiellement pour accomoder des noms avec des initiales au milieu et dans peu de cas des titres avec A dans le milieu (comme BacASable). Beaucoup d'utilisateurs se perdent avec les règles wiki -- regardez Wiki:RecentVisitors pour des exemples fréquents.


Le ModèleDeLien du WikiWiki : \b([A-Z][a-z]+){2,}\b

Ceci est considéré pour être le modèle de lien casse ChatMot et reste le format "standard" (plus comme le format de référence). La plupart des sites wikis avec un lien automatique créeront des liens sur ce modèle.


Le ModèleDeLien renvoie généralemnet vrs simplement le modèle pour des liens de pages normales. Il existe d'autre modèles qui ne correspondent pas aux URLs et aux images. Ces modèles sont désormais lisétés dans le code ci-dessus).
Je parlais à OriFolger? qui a installé un wiki en hébreux chez http://www.rashreshet.org (LienCassé déc 2003). parce que l'hébreux n'a pas de distinctions minuscule/majuscule, ces modèles de liesn "à bosses" ne sont pas applicables. Il s'est décidé sur le format de modèle de lien libre "standard" ala "[modèle de lien]". D'un autre côté, YasushiIwata? a un MoinMoin japonais sur http://www.sh.rim.or.jp/~yasusii (LienCassé déc 2003). Là, à la limite de ce que je peux dire, les page noms sont les modèles standards MoinMoin, essentiellement de la CasseChaMot? dans l'alphabet Latin. Par conséquent, ils utilisent des pages noms anglaises avec du contenu japonais. Ceci renforce plus à fond le besoin de façonner le ModèleDeLien aux exigences particulières du site, pas de renfocer un modèle "standard". -- SunirShah


Merci Cliff pour le modèle de lien externe élégant mis entre crochets, par ex [page d'accueil de usemod]. Désormais MeatballWiki peut facilement pointer des PagesWiki? arbitraires sur des wikis externes, en utilisant leur noms natifs. Pourrait t'on combiner ceci avec les préfixes InterWiki, ressemblant aux [projets communauté Tcl:Tcl] en mode navigation et [Tcl:Tcl projets communauté] en mode édition. -- FridemarPache


Quelques notes

Cette page est obsolète et buggée. Je la récrirai au fil du temps, tout comme j'essaierai de développer une meilleure WikiSyntaxSemantics? pour les liens.

Le ModèleDeLien fondé sur le LangageDeFormes que nous avons ici, connu comme le ChatMot, est possiblement un cas entre-deux si votre cerveau n'est pas déjà écrit en Smalltalk, mais il a tellement bien fonctionné pour le PortlandPatternRepository tout simplement du fait qu'il est très naturel pour ces auteurs de nommer des concepts (par ex des modèles) comme de simples jetons écrits en ChatMot.

Le GaGaParser prend les liens implicites à un nouveau niveau.

Les liens InterWiki sont des liens explicites. Les PagesJumelles sont des liens implicites.

Je crois secrètement qu'un système de lien implicite bien conçu est bien meilleur qu'un système de lien explicite.

Quelques personnes ont produit \(des_choses_étranges) avec des liens libres comme combiner les deux types tout en ajoutant des extra-syntaxes (et par conséquent inutiles) pour l'enfer. Ne faites pas ça.

La forme externe de la syntaxe lien rend aussi les vérifiactions de liens très complexes, car elle exige deux versions du ModèleDeLien. Une pour la syntaxe avec les marqueurs début/fin et une pour le nym de la page correspondant au format WikiNameCanonicalization.

La forme itnerne perd un caractère à partir du domaine.

_le_modèle_lien_ est aussi une forme interne, même avec des marqueurs début et fin, parce que le lien essentiel est fait en connectant les mots ensemble. Ce modèle permet les _liens_ mots uniques.

At the very least, it's probably a good idea to canonicalize to some, singular invariant nym format. If you have multiple link patterns, accept them on the URL, but redirect to a canonicalized version of the nyms. For instance, suppose MeatballWiki moved to the link_pattern format, so this page would become http://usemod.com/cgi-bin/mb.pl?link_pattern. For backward compatibility, though, we also accept the old LinkPattern, but we canonicalize it. So, when someone went to http://usemod.com/cgi-bin/mb.pl?LinkPattern, LinkPattern would canonicalize to link_pattern, and then the script will redirect to http://usemod.com/cgi-bin/mb.pl?link_pattern.

Then again, suppose we made the underscore (_) a linkable character but a non-character. So Link_Pattern would link the same as LinkPattern. If you go to http://usemod.com/cgi-bin/mb.pl?Link_Pattern, the script may then be intelligent enough to space the nym as Link Pattern. On the other hand, if you go to http://usemod.com/cgi-bin/mb.pl?LinkPattern, the script would emit the nym as LinkPattern. This would allow Marty_McFly to render properly, whilst still remaining MartyMcFly? from the PageDatabase's point of view. This doesn't break WYSIWYG, though it does add the mystifying part about WikiNameCanonicalization to the mix.

Speaking about disambiguators, is there any way I can configure UseMod to accept Shiva(Skansen) as a link, not provided with brackets? [[Dan Koehl]]

--- New to MeatBall, not sure where to post this. :-/

FreeLinks cover most of my needs, except for losing some of the convenience of CamelCase-ing links. I would like to get feedback on the social and technical ramifications of a linking rule for camel cased links that, after validating a potential wiki link, matched it against that word regardless of case. Thus PythOn? would match PyThon? but not Python. The latter case can be covered by a bracket syntax. GaGaParser is too liberal for my needs. - ZWiki:DeanGoodmanson


So, I'd love to hear about experiments with other patterns for ImplicitLink?s. Sure, CamelCase is all well and good, but what about some other ideas?

--EvanProdromou

ProWiki supports

-- HelmutLeitner


PageTranslation LangueFrançaise LinkPattern

Discussion

MeatballWiki | RecentChanges | Random Page | Indices | Categories
This page is read-only | View other revisions | Search MetaWiki
Search: