Saltu al enhavo

Vikipedio:Lua/Moduloj/URIutil/en

El Vikipedio, la libera enciklopedio
Ŝablona programado Diskutoj Lua Testoj Subpaĝoj
Modulo Esperanto English Deutsch

Modulo: Dokumentado

URIutil – Module with functions for strings in context of resource identifiers. This is not targeting for the subset, which is a locator formed as URL (see URLutil). In fact unique key codes for any kind of documents are covered: DOI, ISBN, ISSN, URN; furthermore some national and other codes like LCCN, GTIN/EAN, DNB, GND, ZDB, assigned by public institutions.

Functions for templates

[redakti fonton]

All functions expect exactly one unnamed parameter (which should be provided to get a meaningful answer). Whitespace ahead and after content is ignored.

The return value is an empty string (“nothing”), if the parameter value does not fulfil the expectations. If there is a result or the query condition is true, at least one visible character will be returned. The result does not begin or end with a space.

coreISSN
7 significant digits of a 8-digit or 13-digit ISSN
formatISBN
Segmentation by hyphens; “X” capitalized.
formatISSN
Segmentation by hyphens; “X” capitalized.
  • Optionally: second parameter 8 or 13 for output format; else as got.
isDNBvalid
Is this DNB (also GND, ZDB) identifier formally correct, including check digit?
  • GND have at least 9 digits, not former 8 digits SWD and GKD with check digit separated by hyphen.
If a number with up to 7 digits a check digit separated by hyphen is following, a validation by rules before 2012 is tried.
  • nothing – if invalid
  • number of digits or 2011valid
isDOI
Is this a syntactically correct Digital Object Identifier?
  • number of organisation – yes
  • nothing – if invalid
isEscValid
Are bad percent escapings in attempt?
  • nothing – no complaints
  • string – objected sequence
isGTINvalid
Is this GTIN (EAN) formally correct, including check digit?
  • number of digits
  • nothing – if invalid
GTIN are also ISBN-13, ISSN-13 and perhaps one day AV media.
isISBN
Is this a syntactically correct ISBN?
  • 10 if 10 digits and hyphens; also terminated by xX
  • 13 if 13 digits and hyphens; starting with bookland
  • nothing – else
isISBNvalid
Is this a syntactically correct ISBN, including check digit?
  • 10 or 13yes
  • nothing – no
isISSNvalid
Is this ISSN formally correct, including check digit?
  • 8 or 13yes
  • nichts – no
isLCCN
Is this a syntactically correct LCCN?
  • string – identified, without separators
  • nothing – if invalid
linkDOI
Bracketed external link on DOI resolver
linkISBN
Bracketed external link on Special:Booksources with prefixed keyword ISBN and formatISBN (also when syntactically incorrect)
  • Optionally: second parameter 1 permits invalid check digit.
  • Optionally: link=0 and nbsp=0
linkISSN
Bracketed external link on data base of periodicals with prefixed keyword ISSN and formatISSN (also when syntactically incorrect)
  • Optionally: second parameter 1 permits invalid check digit.
  • Optionally: link=0 and nbsp=0
class="plainlinks-print" won’t be issued.
linkURN
Bracketed external link on URN resolver
For the time being not implemented due lack of universal resolver.
mayDOI
isDOI or empty
  • Number of organisation – yes
  • 0empty
  • nothing – if invalid
mayISBN
isISBN or empty
  • 10 oder 13yes
  • 0 empty
  • nothing – if invalid
mayISSN
isISSNvalid or empty
  • 8 oder 13yes
  • 0empty
  • nothing – if invalid
mayLCCN
isLCCN or empty
  • string – identified, without separators
  • 0empty
  • nothing – if invalid
mayURI
URI in general or empty; no spaces within, isEscValid
  • Optionally: second parameter 1 permits ASCII only (no IRI).
  • nothing – no complaints
  • string – objected sequence
mayURN
Valid URN or empty
  • nothing – no complaints
  • string – objected sequence
plainISBN
Raw ISBN with digits only (or X); 10 or 13 characters.
Appropriate for Wikipedia:BibRecord.
uriDOI
Like linkDOI with prefixed scheme doi:
uriURN
Like linkURN with prefixed scheme urn:
Not yet implemented.

Optional parameters

[redakti fonton]

The functions link* and uri* link the prefixed keyword/scheme to the assumed enzyclopedic article. The parameter value may specify an alternative page name; or link=0 would suppress linking.

The functions link* will use non breaking space between prefixed keyword and code; but nbsp=0 requests ASCII spaces.

Markup of bad codes

[redakti fonton]

The functions link* and uri* assign class="invalid-ISBN" etc. to invalid codes. This might be utilized by users or gadgets for markup, e.g. a red box around the code.

.invalid-ISBN,
.invalid-ISSN {
   border: solid 2px #FF0000;
}

Examples (test page)

[redakti fonton]

A test page illustrates practical use.

Functions for Lua modules (API)

[redakti fonton]

All functions described above can be used by other modules:

local lucky, URIutil = pcall( require, "Modul:URIutil" )
if type( URIutil ) == "table" then
    URIutil = URIutil.URIutil()
else
    -- failure; URLutil is the error message
    return "<span class=\"error\">" .. URIutil .. "</span>"
end

Subsequently there are available:

  • URIutil.coreISSN( attempt )
  • URIutil.formatISBN( attempt )
  • URIutil.formatISSN( attempt, achieve )
  • URIutil.isDNBvalid( attempt )
  • URIutil.isDOI( attempt )
  • URIutil.isEscValid( attempt )
  • URIutil.isGTINvalid( attempt )
  • URIutil.isISBN( attempt )
  • URIutil.isISBNvalid( attempt )
  • URIutil.isISSNvalid( attempt )
  • URIutil.isLCCN( attempt )
  • URIutil.linkDOI( attempt )
  • URIutil.linkISBN( attempt, allow, abbr, adhere )
  • URIutil.linkISSN( attempt, allow, abbr, adhere )
  • URIutil.mayDOI( attempt )
  • URIutil.mayISBN( attempt )
  • URIutil.mayISSN( attempt )
  • URIutil.mayLCCN( attempt )
  • URIutil.mayURI( attempt, ascii )
  • URIutil.mayURN( attempt )
  • URIutil.plainISBN( attempt )

The input parameters are:

  • attemptstring with code

Optional:

  • achievenumber 8 or 13 for output format; else as got.
  • allowtrue permit invalid check digit.
  • abbrtrue or string will link prefixed abbreviation ISBN/ISSN.
  • adheretrue use &nbsp; instead of ASCII space.
  • asciitrue permit ASCII only (no IRI).

If succeeding, most functions return a string, the URIutil.is*() a number or string; on failure always false.

General library; no limitations.

Dependencies

[redakti fonton]