diff --git a/Cargo.lock b/Cargo.lock index 7d0e369..274d15b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,6 +2,53 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + +[[package]] +name = "memchr" +version = "2.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" + +[[package]] +name = "regex" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" + [[package]] name = "wikipedia-infobox-analyzer" version = "0.1.0" +dependencies = [ + "regex", +] diff --git a/Cargo.toml b/Cargo.toml index 6575099..1d7c3c5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -15,3 +15,4 @@ keywords = ["wikipedia", "wikidata", "infobox"] categories = ["command-line-utilities"] [dependencies] +regex = "1.11.1" diff --git a/examples/templates/nl_infobox_bedrijf b/examples/templates/nl_infobox_bedrijf new file mode 100644 index 0000000..8603247 --- /dev/null +++ b/examples/templates/nl_infobox_bedrijf @@ -0,0 +1,617 @@ + +{{Infobox generiek +| kop = {{#if:{{{bedrijfsnaam|{{{naam|}}}}}}|{{{bedrijfsnaam|{{{naam}}}}}}|{{wikidata|properties|multilanguage|raw|normal+|sourced|P1448|format=
%p
}}}} +| image = {{#if:{{{bedrijfslogo|{{{logo|}}}}}}|{{{bedrijfslogo|{{{logo|}}}}}}|{{wikidata|property|raw|P154}}}} +| alt = Logo +| imagewidth = 220x110 +| mainimage = {{#if:{{{stopafbeelding|}}}||{{#if:{{{afbeelding|}}}|{{{afbeelding}}}|{{wikidata|property|raw|P18}}}}}} +| maincaption = {{#if:{{{stopafbeelding|}}}||{{#if:{{{afbeelding|}}}|{{{onderschrift|}}}|{{wikidata|qualifier|P18|P2096}}}}}} +| stopafbeelding = {{{stopafbeelding}}} +| mainimagewidth = {{{afbeeldingbreedte|}}} +| head1_1 = Eigendom | item1_1 = {{{eigendom|}}} +| head1_2 = [[Effectenbeurs|Beurs]] +| item1_2 = {{#if:{{{beurs|}}}|{{#switch: {{{beurs|}}} + | ASX = {{Link ASX|{{{beurscode1}}}}} + | BME = {{Link BME|{{{beurscode1}}}}} + | DB = [[Deutsche Börse]]: [https://www.boerse-frankfurt.de/suchergebnisse/{{{beurscode1}}} '''{{{beurscode1}}}'''] + | Euronext = {{Link Euronext|{{{beurscode1}}}}} + | Euronext-LSE = {{Link Euronext|{{{beurscode1}}}}}, {{Link LSE|{{{beurscode2}}}}} + | HKSE = {{Link HKSE|{{{beurscode1}}}}} + | KRX = {{Link KRX|{{{beurscode1}}}}} + | KRX-LSE = {{Link KRX|{{{beurscode1}}}}}, {{Link LSE|{{{beurscode2}}}}} + | LSE = {{Link LSE|{{{beurscode1}}}}} + | MCX = {{Link MCX|{{{beurscode1}}}}} + | NASDAQ = {{Link NASDAQ|{{{beurscode1}}}}} + | NASDAQ-Euronext = {{Link NASDAQ|{{{beurscode1}}}}}, {{Link Euronext|{{{beurscode2}}}}} + | NYSE = {{Link NYSE|{{{beurscode1}}}}} + | NYSE-Euronext = {{Link NYSE|{{{beurscode1}}}}}, {{Link Euronext|{{{beurscode2}}}}} + | NYSE-LSE = {{Link NYSE|{{{beurscode1}}}}}, {{Link LSE|{{{beurscode2}}}}} + | NYSE-NASDAQ = {{Link NYSE|{{{beurscode1}}}}}, {{Link NASDAQ|{{{beurscode2}}}}} + | NYSE-TSE = {{Link NYSE|{{{beurscode1}}}}}, {{Link TSE|{{{beurscode2}}}}} + | OMX = [[OMX]]: [https://www.nasdaqomxnordic.com/aktier/shareinformation?Instrument={{{beurscode1}}} '''{{{beurscode2}}}'''] + | OSE = {{Link OSE|{{{beurscode1}}}}} + | SIX = {{Link SIX|{{{beurscode1}}}|{{{beurscode2}}}}} + | SSE = [[Shanghai Stock Exchange|SSE]]: [http://english.sse.com.cn/markets/equities/list/overview/?COMPANY_CODE={{{beurscode1}}}&STOCK_CODE={{{beurscode1}}} {{{beurscode1}}}] + | SZSE = {{Link SZSE|{{{beurscode1}}}}} + | TSE = {{Link TSE|{{{beurscode1}}}}} + | TSX = {{Link TSX|{{{beurscode1}}}}} +}} }} +| head1_3 = | item1_3 = {{#if:{{{beurs2|}}}|{{#switch: {{{beurs2|}}} + | ASX = {{Link ASX|{{{beurs2code1}}}}} + | BME = {{Link BME|{{{beurs2code1}}}}} + | DB = [[Deutsche Börse]]: [https://www.boerse-frankfurt.de/suchergebnisse/{{{beurs2code1}}} '''{{{beurs2code1}}}'''] + | Euronext = {{Link Euronext|{{{beurs2code1}}}}} + | Euronext-LSE = {{Link Euronext|{{{beurs2code1}}}}}, {{Link LSE|{{{beurs2code2}}}}} + | HKSE = {{Link HKSE|{{{beurs2code1}}}}} + | KRX = {{Link KRX|{{{beurs2code1}}}}} + | KRX-LSE = {{Link KRX|{{{beurs2code1}}}}}, {{Link LSE|{{{beurs2code2}}}}} + | LSE = {{Link LSE|{{{beurs2code1}}}}} + | MCX = {{Link MCX|{{{beurs2code1}}}}} + | NASDAQ = {{Link NASDAQ|{{{beurs2code1}}}}} + | NASDAQ-Euronext = {{Link NASDAQ|{{{beurs2code1}}}}}, {{Link Euronext|{{{beurs2code2}}}}} + | NYSE = {{Link NYSE|{{{beurs2code1}}}}} + | NYSE-Euronext = {{Link NYSE|{{{beurs2code1}}}}}, {{Link Euronext|{{{beurs2code2}}}}} + | NYSE-LSE = {{Link NYSE|{{{beurs2code1}}}}}, {{Link LSE|{{{beurs2code2}}}}} + | NYSE-NASDAQ = {{Link NYSE|{{{beurs2code1}}}}}, {{Link NASDAQ|{{{beurs2code2}}}}} + | NYSE-TSE = {{Link NYSE|{{{beurs2code1}}}}}, {{Link TSE|{{{beurs2code2}}}}} + | OMX = [[OMX]]: [https://www.nasdaqomxnordic.com/aktier/shareinformation?Instrument={{{beurs2code1}}} '''{{{beurs2code2}}}'''] + | OSE = {{Link OSE|{{{beurs2code1}}}}} + | SIX = {{Link SIX|{{{beurs2code1}}}|{{{beurs2code2}}}}} + | SSE = [[Shanghai Stock Exchange|SSE]]: [http://english.sse.com.cn/markets/equities/list/overview/?COMPANY_CODE={{{beurs2code1}}}&STOCK_CODE={{{beurs2code1}}} {{{beurs2code1}}}] + | SZSE = {{Link SZSE|{{{beurs2code1}}}}} + | TSE = {{Link TSE|{{{beurs2code1}}}}} + | TSX = {{Link TSX|{{{beurs2code1}}}}} +}} }} +| head1_4 = | item1_4 = {{#if:{{{beurs3|}}}|{{#switch: {{{beurs3|}}} + | ASX = {{Link ASX|{{{beurs3code1}}}}} + | BME = {{Link BME|{{{beurs3code1}}}}} + | DB = [[Deutsche Börse]]: [https://www.boerse-frankfurt.de/suchergebnisse/{{{beurs3code1}}} '''{{{beurs3code1}}}'''] + | Euronext = {{Link Euronext|{{{beurs3code1}}}}} + | KRX = {{Link KRX|{{{beurs3code1}}}}} + | LSE = {{Link LSE|{{{beurs3code1}}}}} + | MCX = {{Link MCX|{{{beurs3code1}}}}} + | NASDAQ = {{Link NASDAQ|{{{beurs3code1}}}}} + | NYSE = {{Link NYSE|{{{beurs3code1}}}}} + | OMX = [[OMX]]: [https://www.nasdaqomxnordic.com/aktier/shareinformation?Instrument={{{beurs3code1}}} '''{{{beurs3code2}}}'''] + | OSE = {{Link OSE|{{{beurs3code1}}}}} + | SIX = {{Link SIX|{{{beurs3code1}}}|{{{beurs3code2}}}}} + | SSE = [[Shanghai Stock Exchange|SSE]]: [http://english.sse.com.cn/markets/equities/list/overview/?COMPANY_CODE={{{beurs3code1}}}&STOCK_CODE={{{beurs3code1}}} {{{beurs3code1}}}] + | SZSE = {{Link SZSE|{{{beurs3code1}}}}} + | TSE = {{Link TSE|{{{beurs3code1}}}}} + | TSX = {{Link TSX|{{{beurs3code1}}}}} +}} }} +| head1_5 = {{#if:{{{beurs|}}}||[[Effectenbeurs|Beurs]]}} | item1_5 = {{{beursanders|}}} +| head1_6 = [[Aandeel|Groot­aandeelhouders]] | item1_6 = {{{grootaandeelhouders|}}} +| head1_7 = Doel | item1_7 = {{{doel|}}} +| head1_8 = Motto of slagzin | item1_8 = {{{slogan|}}} +| head1_9 = Rechtsvorm | item1_9 = {{{rechtsvorm|}}} +| head2_1 = Oprichting | item2_1 = {{#if:{{{oprichting|}}}|{{{oprichting}}}|{{wikidata|property|sourced|P571}}}} +| head2_2 = Voorganger(s) | item2_2 = {{{voorganger|}}} +| head2_3 = {{#if:{{{opheffingnaam|}}}|{{{opheffingnaam}}}|Opheffing}} | item2_3 = {{#if:{{{opheffing|}}}|{{{opheffing}}}|{{wikidata|property|sourced|P576}}}} +| head2_4 = Oorzaak einde | item2_4 = {{{oorzaak einde|}}} +| head2_5 = Oprichter(s) | item2_5 = {{#if:{{{oprichter|}}}|{{{oprichter}}}|{{wikidata|properties|linked|P112}}}} +| head2_6 = Eigenaar | item2_6 = {{#if:{{{eigenaar|}}}|{{{eigenaar}}}|{{#if:{{{grootaandeelhouders|}}}||{{wikidata|properties|sourced|linked|current|linked|P127}}}}}} +| head2_7 = Sleutelfiguren | item2_7 = {{#if:{{{sleutelfiguren|}}}|{{{sleutelfiguren|}}}|{{wikidata|properties|P169|format=%p (voorzitter)}}}} +| head2_8 = Bestuur | item2_8 = {{{bestuur|}}} +| head2_9 = Land | item2_9 = {{#if:{{{land|}}}|{{{land}}}|{{#if:{{wikidata|property|raw|P17}}|{{ {{wikidata|property|deprecated+|raw|{{wikidata|property|raw|P17}}|P297}} }}|}}}} +| head2_10 = Hoofdkantoor | item2_10= {{#if:{{{locatie|}}}|{{{locatie}}}|{{wikidata|properties|sourced|linked|current|P159}}}} +| head3_1 = Werknemers | item3_1 = {{#if:{{{werknemers|}}}|{{{werknemers|}}}|{{wikidata|property|sourced|edit|qualifier|P1128|P585}}}} +| head3_2 = Leden | item3_2 = {{{leden|}}} +| head3_3 = Actieve leden | item3_3 = {{{actieve leden|}}} +| head3_4 = [[Dochteronderneming|Dochter{{shy}}onderneming]] | item3_4 = {{#if:{{{dochteronderneming|}}}|{{{dochteronderneming}}}|{{wikidata|properties|sourced|linked|current|P355|format=
%p
}}}} +| head3_5 = [[Moedermaatschappij|Moeder{{shy}}onderneming]] | item3_5 = {{#if:{{{moederonderneming|}}}|{{{moederonderneming}}}|{{wikidata|properties|sourced|linked|current|P749|format=
%p
}}}} +| head3_6 = Beheerd vermogen | item3_6 = {{#if:{{{beheerd vermogen|}}}|{{{beheerd vermogen|}}}|{{wikidata|property|linked|short|qualifier|edit|P4103|P585}}}} +| head3_7 = Producten | item3_7 = {{#if:{{{producten|}}}|{{{producten}}}|{{wikidata|properties|linked|current|P1056}}}} +| head3_8 = [[Economische sector|Sector]] | item3_8 = {{{sector|}}} +| head3_9 = Industrie | item3_9 = {{#if:{{{industrie|}}}|{{{industrie}}}|{{#if:{{{sector|}}}||{{wikidata|properties|linked|current|P452}}}}}} +| head4_1 = [[Omzet]]/jaar | item4_1 = {{#if:{{{omzet|}}}|{{{omzet}}}|{{wikidata|property|linked|short|qualifier|qualifier|edit|P2139|P585|P518}}}} +| head4_2 = [[Winst (onderneming)|Winst]]/jaar | item4_2 = {{#if:{{{winst|}}}|{{{winst|}}}|{{wikidata|property|linked|short|qualifier|edit|P2295|P585}}}} +| head4_3 = [[Beurswaarde|Markt{{shy}}kapitalisatie]] | item4_3 = {{#if:{{{marktkapitalisatie|}}}|{{{marktkapitalisatie|}}}|{{wikidata|property|linked|short|qualifier|edit|P2226|P585}}}} +| head4_4 = Website | item4_4 = {{#if:{{{website|}}}|{{#ifeq:{{#invoke:String|sub|s={{{website|}}}|i=1|j=4}}|http|{{URL|{{{website}}}}}|{{{website|}}}}}|{{#if:{{#property:P856}}|[{{wikidata|property|raw|P856}} Officiële website]|}}}} +| head4_5 = [[Divisie (organisatie)|Divisie]] | item4_5 = {{{divisie|}}} +| image0 = {{{afbeelding2|}}} +| caption0 = {{{onderschrift2|}}} +| image1 = {{{afbeelding3|}}} +| caption1 = {{{onderschrift3|}}} +| portaal = Economie +| portaal2 = {{{portaal2|}}} +| other1 = {{{overig|}}} +}} + +{{Documentatie|1= +{{Gebruikt Wikidata|P18|P154|P1128|P4103|P2139|P2295|P2226|P856|P169|P1448|P159|P749|P355|P17|P1056|P452|P576|P112|P127|P856|P2096}} +Dit sjabloon beoogt de relevante gegevens van het beschreven bedrijf in een overzichtelijke kader weer te geven. + +== Gebruik == +=== Korte versie === +
{{Infobox bedrijf
+| afbeelding          =
+| onderschrift        =
+| rechtsvorm          =
+| oprichting          =
+| voorganger          =
+| opheffing           =
+| oorzaak einde       =
+| oprichter           =
+| eigenaar            =
+| sleutelfiguren      =
+| land                =
+| locatie             =
+| werknemers          =
+| producten           =
+| sector              =
+| industrie           =
+| omzet               =
+| winst               =
+| website             = 
+| overig              =
+| portaal2            =
+}}
+
+ +=== Langere versie === +
{{Infobox bedrijf
+| naam                =
+| logo                =
+| afbeelding          =
+| onderschrift        =
+| eigendom            =
+| beurs               =
+| beurscode1          =
+| beurscode2          =
+| beurs2              =
+| beurs2code1         =
+| beurs2code2         =
+| beurs3              =
+| beurs3code1         =
+| beurs3code2         =
+| beursanders         =
+| grootaandeelhouders =
+| doel                =
+| slogan              =
+| rechtsvorm          =
+| oprichting          =
+| voorganger          =
+| opheffingnaam       =
+| opheffing           =
+| oorzaak einde       =
+| oprichter           =
+| eigenaar            =
+| sleutelfiguren      =
+| bestuur             =
+| land                =
+| locatie             =
+| werknemers          =
+| leden               =
+| actieve leden       =
+| dochteronderneming  =
+| moederonderneming   =
+| beheerd vermogen    =
+| producten           =
+| sector              =
+| industrie           =
+| omzet               =
+| winst               =
+| marktkapitalisatie  =
+| website             = 
+| divisie             =
+| overig              =
+| portaal2            =
+}}
+ +==Toelichting== +;logo: te gebruiken in de vorm van: ''Logonaam.svg''. Bij een leeg veld wordt het logo vanaf Wikidata gebruikt. +;afbeelding: een afbeelding in de vorm van: ''Afbeeldingsnaam.png''. +;onderschrift: een onderschrift onder de afbeelding. +;opheffingnaam: naam van de (links getoonde) omschrijving, bijvoorbeeld 'Faillisement' of 'Annexatie'. +;beheerd vermogen: gebruik deze parameter voor vermogensbeheerders. Indien leeg wordt het opgehaald uit Wikidata. +;eigendom: diverse mogelijk, maar bij een privaat bedrijf dient hier te staan: Private onderneming. +;beurs: voeg hier de beursafkorting in en kies daarbij uit een van onderstaande opties. Zoals te zien in het overzicht kan er ook gebruik worden gemaakt van duo's. Of een enkelvoudige beurs of een duo gekozen wordt, neem de beursafkorting exact over zoals die hieronder staat. Deze parameter in combinatie met de volgende, maakt het mogelijk om direct naar het profiel van het bedrijf op de beurswebsite te linken. +;beurs2 en beurs3: Idem als bovenstaande. Alleen bij beurs3 zijn de duo's niet mogelijk. +;beurscode1: vul hierachter de code in van het bedrijf die het op de beurs heeft. +;beurscode2: samen te gebruiken met beurscode1 en werkt hetzelfde, maar nu voor de 2e beurs van een duo, of voor de visuele code van het bedrijf op beurs OMX of SIX. + +Mogelijkheden: +* [[Australian Securities Exchange|ASX]] (Australië) +* [[Bolsas y Mercados Españoles|BME]] (Spanje) +* [[Deutsche Börse|DB]] (Duitsland) +* [[Euronext]] +* Euronext-LSE +* [[Hong Kong Stock Exchange|HKSE]] (Hongkong) +* [[Korea Exchange|KRX]] (Zuid-Korea) +* [[Korea Exchange|KRX]]-[[London Stock Exchange|LSE]] +* [[London Stock Exchange|LSE]] (Londen) +* [[Beurs van Moskou|MCX]] (Moskou) +* [[NASDAQ]] +* [[NASDAQ]]-[[Euronext]] +* [[New York Stock Exchange|NYSE]] +* [[New York Stock Exchange|NYSE]]-[[Euronext]] +* [[New York Stock Exchange|NYSE]]-[[London Stock Exchange|LSE]] +* [[New York Stock Exchange|NYSE]]-[[NASDAQ]] +* [[New York Stock Exchange|NYSE]]-[[Tokyo Stock Exchange|TSE]] +* [[OMX]] +* [[Oslo Børs|OSE]] (Oslo) +* [[Swiss Exchange|SIX]] (Zwitserland) +* [[Shanghai Stock Exchange|SSE]] (Shanhai) +* [[Shenzhen Stock Exchange|SZSE]] (Shenzhen) +* [[Tokyo Stock Exchange|TSE]] (Tokio) +* [[Toronto Stock Exchange|TSX]] (Toronto) + +;beursanders: gebruik deze parameter als de beurs niet voorkomt in bovenstaand overzicht, en vul hier achter in de afkorting van de beurs met daarachter de volledige link. +;slogan: een bekende slogan die het bedrijf gebruikt of heeft gebruikt. +;rechtsvorm: onder welke rechtsvorm staat of stond het bedrijf. +;oprichting: op welke datum of jaar werd het bedrijf opgericht. Indien leeg wordt het opgehaald uit Wikidata. +;voorganger: onder welke firma of naam stond het bedrijf voorheen bekend. +;opheffing: op welke datum of jaar werd het bedrijf opgeheven. Indien leeg wordt het opgehaald uit Wikidata. +;oorzaak einde: door welke reden werd het bedrijf opgeheven, bijv. faillissement, verkoop, of vrijwillig. +;oprichter: wie is/zijn de oprichter(s) van het bedrijf. Indien leeg wordt het opgehaald uit Wikidata. +;eigenaar: wie is de overkoepelende eigenaar van het bedrijf. Indien leeg wordt het opgehaald uit Wikidata. +;sleutelfiguren: wie zijn belangrijke personen binnen het bedrijf, bijv. directeur, technische directeur. Indien leeg wordt de bestuursvoorzitter opgehaald uit Wikidata. +;locatie: in welke plaats is het hoofdkantoor van het bedrijf gevestigd. Indien leeg wordt het opgehaald uit Wikidata. +;werknemers: hoeveel werknemers telt het bedrijf, met evt. jaartal erbij. Indien leeg wordt het opgehaald uit Wikidata. +;moederonderneming: onder welke moedermaatschappij valt het bedrijf. Indien leeg wordt het opgehaald uit Wikidata. +;producten: welke producten maakt het bedrijf. Indien leeg worden ze opgehaald uit Wikidata. +;omzet/winst: hoeveel omzet en winst maakt het bedrijf per jaar, met evt. gebruik van de sjablonen {{winst}} en {{verlies}}. Indien leeg wordt het opgehaald uit Wikidata. +;website: url van de website. Indien leeg wordt het opgehaald uit Wikidata. + +== Zie ook == +* [[Sjabloon:Infobox bedrijfsonderdeel]] + +== TemplateData == + +{ + "params": { + "naam": { + "aliases": [ + "bedrijfsnaam" + ], + "type": "line", + "description": "Bedrijfsnaam. Toont in de kop van de infobox.", + "default": "" + }, + "logo": { + "aliases": [ + "bedrijfslogo" + ], + "description": "bestandsnaam van het logo op Commons.", + "type": "wiki-file-name", + "example": "Logonaam.svg", + "suggested": true + }, + "bedrijfslogobreedte": { + "deprecated": "Niet meer in gebruik. Te verwijderen." + }, + "afbeelding": { + "type": "wiki-file-name", + "description": "bestandsnaam van een afbeelding op Commons.", + "example": "Afbeeldingsnaam.png", + "suggested": true + }, + "afbeeldingbreedte": { + "type": "line" + }, + "onderschrift": { + "description": "een onderschrift onder de afbeelding", + "type": "line" + }, + "eigendom": { + "type": "line" + }, + "beurs": { + "description": "voeg hier de beursafkorting in en kies daarbij uit een van onderstaande opties. Zoals te zien in het overzicht kan er ook gebruik worden gemaakt van duo's. Of een enkelvoudige beurs of een duo gekozen wordt, neem de beursafkorting exact over zoals die hieronder staat. Deze parameter in combinatie met de volgende, maakt het mogelijk om direct naar het profiel van het bedrijf op de beurswebsite te linken.", + "example": "ASX; BME; DB; Euronext; Euronext-LSE; HKSE; KRX; KRX-LSE; LSE; MCX; NASDAQ; NASDAQ-Euronext; NYSE; NYSE-Euronext; NYSE-LSE; NYSE-NASDAQ; NYSE-TSE; OMX; OSE; SIX; SZSE; TSE; TSX", + "type": "line", + "suggestedvalues": [ + "ASX", + "BME", + "DB", + "Euronext", + "Euronext-LSE", + "HKSE", + "KRX", + "KRX-LSE", + "LSE", + "MCX", + "NASDAQ", + "NASDAQ-Euronext", + "NYSE", + "NYSE-Euronext", + "NYSE-LSE", + "NYSE-NASDAQ", + "NYSE-TSE", + "OMX", + "OSE", + "SIX", + "SSE", + "SZSE", + "TSE", + "TSX" + ] + }, + "beurscode1": { + "description": "vul hierachter de code in van het bedrijf die het op de beurs heeft", + "type": "line" + }, + "beurscode2": { + "description": "samen te gebruiken met beurscode1 en werkt hetzelfde, maar nu voor de 2e beurs van een duo, of voor de visuele code van het bedrijf op beurs OMX of SIX", + "type": "line" + }, + "beurs2": { + "description": "voeg hier de beursafkorting in en kies daarbij uit een van onderstaande opties. Zoals te zien in het overzicht kan er ook gebruik worden gemaakt van duo's. Of een enkelvoudige beurs of een duo gekozen wordt, neem de beursafkorting exact over zoals die hieronder staat. Deze parameter in combinatie met de volgende, maakt het mogelijk om direct naar het profiel van het bedrijf op de beurswebsite te linken.", + "example": "ASX; BME; DB; Euronext; Euronext-LSE; HKSE; KRX; KRX-LSE; LSE; MCX; NASDAQ; NASDAQ-Euronext; NYSE; NYSE-Euronext; NYSE-LSE; NYSE-NASDAQ; NYSE-TSE; OMX; OSE; SIX; SZSE; TSE; TSX", + "type": "line", + "suggestedvalues": [ + "ASX", + "BME", + "DB", + "Euronext", + "Euronext-LSE", + "HKSE", + "KRX", + "KRX-LSE", + "LSE", + "MCX", + "NASDAQ", + "NASDAQ-Euronext", + "NYSE", + "NYSE-Euronext", + "NYSE-LSE", + "NYSE-NASDAQ", + "NYSE-TSE", + "OMX", + "OSE", + "SIX", + "SSE", + "SZSE", + "TSE", + "TSX" + ] + }, + "beurs2code1": { + "type": "line" + }, + "beurs2code2": { + "type": "line" + }, + "beurs3": { + "description": "voeg hier de beursafkorting in en kies daarbij uit een van onderstaande opties. Zoals te zien in het overzicht kan er ook gebruik worden gemaakt van duo's. Of een enkelvoudige beurs of een duo gekozen wordt, neem de beursafkorting exact over zoals die hieronder staat. Deze parameter in combinatie met de volgende, maakt het mogelijk om direct naar het profiel van het bedrijf op de beurswebsite te linken.", + "example": "ASX; BME; DB; Euronext; Euronext-LSE; HKSE; KRX; KRX-LSE; LSE; MCX; NASDAQ; NASDAQ-Euronext; NYSE; NYSE-Euronext; NYSE-LSE; NYSE-NASDAQ; NYSE-TSE; OMX; OSE; SIX; SZSE; TSE; TSX", + "type": "line", + "suggestedvalues": [ + "ASX", + "BME", + "DB", + "Euronext", + "Euronext-LSE", + "HKSE", + "KRX", + "KRX-LSE", + "LSE", + "MCX", + "NASDAQ", + "NASDAQ-Euronext", + "NYSE", + "NYSE-Euronext", + "NYSE-LSE", + "NYSE-NASDAQ", + "NYSE-TSE", + "OMX", + "OSE", + "SIX", + "SSE", + "SZSE", + "TSE", + "TSX" + ] + }, + "beurs3code1": { + "type": "line" + }, + "beurs3code2": { + "type": "line" + }, + "beursanders": { + "description": "gebruik deze parameter als de beurs niet voorkomt in bovenstaand overzicht, en vul hier achter in de afkorting van de beurs met daarachter de volledige link", + "type": "line" + }, + "grootaandeelhouders": { + "type": "line" + }, + "doel": { + "type": "line" + }, + "slogan": { + "description": "een bekende slagzin die het bedrijf gebruikt of heeft gebruikt", + "type": "line" + }, + "rechtsvorm": { + "description": "onder welke rechtsvorm staat of stond het bedrijf", + "type": "line", + "suggested": true + }, + "oprichting": { + "description": "op welke datum of jaar werd het bedrijf opgericht", + "type": "line", + "suggested": true + }, + "voorganger": { + "description": "onder welke firma of naam stond het bedrijf voorheen bekend", + "type": "line" + }, + "opheffingnaam": { + "description": "naam van de (links getoonde) omschrijving, bijvoorbeeld 'Faillisement' of 'Annexatie'", + "type": "line" + }, + "opheffing": { + "description": "op welke datum of jaar werd het bedrijf opgeheven", + "type": "line" + }, + "oorzaak einde": { + "description": "door welke reden werd het bedrijf opgeheven, bijv. faillissement, verkoop, of vrijwillig", + "type": "line" + }, + "oprichter": { + "description": "wie is/zijn de oprichter(s) van het bedrijf", + "type": "content", + "suggested": true + }, + "eigenaar": { + "description": "wie is de overkoepelende eigenaar van het bedrijf", + "type": "line", + "suggested": true + }, + "sleutelfiguren": { + "description": "wie zijn belangrijke personen binnen het bedrijf, bijv. directeur, technische directeur", + "type": "content", + "suggested": true + }, + "bestuur": { + "type": "line" + }, + "land": { + "type": "line", + "suggested": true + }, + "locatie": { + "description": "in welke plaats is het hoofdkantoor van het bedrijf gevestigd", + "type": "line", + "suggested": true + }, + "werknemers": { + "description": "hoeveel werknemers telt het bedrijf, met evt. jaartal erbij", + "type": "line" + }, + "leden": { + "type": "line" + }, + "actieve leden": { + "type": "line" + }, + "dochteronderneming": { + "type": "line" + }, + "moederonderneming": { + "description": "onder welke moedermaatschappij valt het bedrijf", + "type": "line" + }, + "beheerd vermogen": { + "description": "gebruik deze parameter voor vermogensbeheerders", + "type": "line" + }, + "producten": { + "description": "welke producten maakt het bedrijf", + "type": "content" + }, + "sector": { + "type": "line", + "suggested": true + }, + "industrie": { + "type": "line" + }, + "omzet": { + "description": "hoeveel omzet maakt het bedrijf, met evt. gebruik van de sjablonen {{winst}} en {{verlies}}", + "type": "line" + }, + "winst": { + "description": "hoeveel winst maakt het bedrijf, met evt. gebruik van de sjablonen {{winst}} en {{verlies}}", + "type": "line" + }, + "marktkapitalisatie": { + "type": "line" + }, + "website": { + "description": "Url van de website", + "type": "url", + "deprecated": "Gebruik Wikidata" + }, + "afbeelding2": { + "type": "wiki-file-name" + }, + "onderschrift2": { + "type": "line" + }, + "afbeelding3": { + "type": "wiki-file-name" + }, + "onderschrift3": { + "type": "line" + }, + "portaal2": { + "type": "line" + }, + "overig": { + "type": "line" + }, + "divisie": { + "type": "line" + }, + "stopafbeelding": { + "description": "Indien ingevuld wordt er geen afbeelding getoond", + "type": "boolean" + } + }, + "format": "{{_\n| ___________________ = _\n}}", + "description": "Dit sjabloon beoogt de relevante gegevens van het beschreven bedrijf in een overzichtelijke kader weer te geven", + "paramOrder": [ + "naam", + "logo", + "bedrijfslogobreedte", + "stopafbeelding", + "afbeelding", + "afbeeldingbreedte", + "onderschrift", + "eigendom", + "beurs", + "beurscode1", + "beurscode2", + "beurs2", + "beurs2code1", + "beurs2code2", + "beurs3", + "beurs3code1", + "beurs3code2", + "beursanders", + "grootaandeelhouders", + "doel", + "slogan", + "rechtsvorm", + "oprichting", + "voorganger", + "opheffingnaam", + "opheffing", + "oorzaak einde", + "oprichter", + "eigenaar", + "sleutelfiguren", + "bestuur", + "land", + "locatie", + "werknemers", + "leden", + "actieve leden", + "dochteronderneming", + "moederonderneming", + "beheerd vermogen", + "producten", + "sector", + "industrie", + "omzet", + "winst", + "marktkapitalisatie", + "website", + "divisie", + "overig", + "afbeelding2", + "onderschrift2", + "afbeelding3", + "onderschrift3", + "portaal2" + ] +} + +}} + +[[Categorie:Wikipedia:Sjablonen bedrijf| ]] +[[Categorie:Wikipedia:Sjablonen infobox|Bedrijf]] +
diff --git a/examples/templates/nl_infobox_software b/examples/templates/nl_infobox_software new file mode 100644 index 0000000..3ac1dbd --- /dev/null +++ b/examples/templates/nl_infobox_software @@ -0,0 +1,294 @@ + +{{Infobox generiek +| kop = {{{naam|}}} +| image = {{#if:{{{logo|}}}|{{{logo|}}}|{{#ifeq:{{#invoke:wikidata|claim|P154}}|Geen waarde||{{#invoke:wikidata|claim|P154}}}}}} +| alt = Logo +| imagewidth = 200x80 +| mainimage = {{#if:{{{screenshot|}}}|{{{screenshot}}}|{{wikidata|property|raw|P18}}}} +| mainimagewidth = {{{screenshotbreedte|}}} +| maincaption = {{#if:{{{screenshot|}}}|{{{onderschrift|}}}|{{#if:{{#invoke:wd|qualifier|P18|P2096}}|{{#invoke:wd|qualifier|P18|P2096}}}}}} +| image1 = {{{afbeelding|}}} +| caption1 = +| head1_1 = Ontwerper(s) | item1_1 = {{#if: {{{ontwerper|}}} + | {{{ontwerper|}}} + | {{wikidata|property|linked|P170}} +}} +| head1_2 = [[Softwareontwikkelaar|Ontwikkelaar(s)]] | item1_2 = {{#if: {{{ontwikkelaar|}}} + | {{{ontwikkelaar|}}} + | {{wikidata|property|linked|P178}} +}} +| head1_3 = Uitgebracht | item1_3 = {{#if: {{{uitgebracht|}}} + | {{{uitgebracht|}}} + | {{#if:{{wikidata|property|P571}}|{{wikidata|property|P571}}{{#ifeq:10|{{#invoke:String|len|{{wikidata|property|raw|P571}}}}| ({{Leeftijd op datum|{{wikidata|property|raw|P571}}}} jaar geleden)}} + | {{wikidata|property|P577}}{{#ifeq:10|{{#invoke:String|len|{{wikidata|property|raw|P577}}}}| ({{Leeftijd op datum|{{wikidata|property|raw|P577}}}} jaar geleden)}} + }} +}} +| head1_4 = [[Versienummer|Recentste versie]] | item1_4 = {{#if: {{{laatste_versie|}}} + | {{{laatste_versie|}}}{{#If:{{{laatste_releasedatum|}}}|  
({{{laatste_releasedatum}}})}} + | {{wikidata|properties|qualifier|qualifiers|references|edit|P348|P577|P400|P548=Q2804309}} +}} +| head1_5 = [[Bètaversie|Recentste bètaversie]] | item1_5 = {{#if:{{{geenbeta|}}}||{{#if: {{{laatste_beta_versie|}}} + | {{{laatste_beta_versie|}}}{{#If:{{{laatste_beta_releasedatum|}}}|  
({{{laatste_beta_releasedatum}}})}} + | {{wikidata|properties|qualifier|qualifiers|references|edit|P348|P577|P400|P548=Q3295609}}}} +}} +| head1_6 = [[Onderhoudsversie|Onderhouds{{shy}}versie]] | item1_6 = {{#if: {{{onderhouds_versie|}}} + | {{{onderhouds_versie|}}}{{#If:{{{onderhouds_releasedatum|}}}|  
({{{onderhouds_releasedatum}}})}} + | {{wikidata|properties|qualifier|qualifiers|references|edit|P348|P577|P400|P548=Q6736813}} +}} +| head1_7 = Status | item1_7 = {{{status|}}} +| head1_8 = [[Besturingssysteem|Besturings{{shy}}systeem]] | item1_8 = {{#if: {{{besturingssysteem|}}} + | {{{besturingssysteem|}}} + | {{wikidata|properties|P306}} +}} +| head1_9 = [[Layout-engine]] | item1_9 = {{{layout-engine|}}} +| head2_1 = [[Programmeertaal|Geschreven in]] | item2_1 = {{#if: {{{programmeertaal|}}} + | {{{programmeertaal|}}} + | {{wikidata|properties|linked|P277}} +}} +| head2_2 = Categorie | item2_2 = {{{categorie|}}} +| head2_3 = [[Softwarelicentie|Licentie(s)]] | item2_3 = {{#if: {{{licentie|}}} + | {{{licentie|}}} + | {{wikidata|property|P275}} +}} +| head2_4 = [[Versiebeheersysteem|Versiebeheer]] +| item2_4 = {{#if:{{{versiebeheer|}}}|{{{versiebeheer}}}|{{#if:{{#property:P1324}}|[{{wikidata|property|P1324|best|format=%p}} Officiële broncode]|}}}} +| head2_5 = Website | item2_5 = {{#if:{{{website|}}}|{{{website}}}|{{#if:{{#property:P856}}|[{{wikidata|property|raw|P856}} Officiële website]|}}}} +| head2_6 = Extra website | item2_6 = {{{website2|}}} +| portaal = Informatica +| portaal2 = {{{portaal2|}}} +}}{{Sjablooninfo|1= +{{Gebruikt Wikidata|P18|P154|P170|P178|P275|P277|P306|P348|P400|P548|P571|P577|P856|P1324|P2096}} +== Gebruik == +Knip en plak de volgende tekst en vul de velden in. Wanneer er geen waarde wordt opgegeven in een veld, zal deze niet worden getoond in de uiteindelijke tabel. +
{{Infobox software
+| naam                      =
+| logo                      =
+| screenshot                =
+| onderschrift              =
+| ontwerper                 =
+| ontwikkelaar              = 
+| uitgebracht               = 
+| laatste_versie            = 
+| laatste_releasedatum      = 
+| laatste_beta_versie       = 
+| laatste_beta_releasedatum = 
+| status                    =
+| besturingssysteem         =
+| programmeertaal           = 
+| categorie                 =
+| licentie                  = 
+| website                   = 
+}}
+ +=== Toelichting === +* logo leeglaten zorgt ervoor dat het logo vanaf Wikidata wordt opgehaald. +* laatste_versie en laatste_releasedatum leeglaten zorgt ervoor dat deze gegevens uit Wikidata opgehaald worden. +* laatste_beta_versie bevat steeds de huidige bètaversie, alfaversie of ''release candidate''. +* status beschrijft de status van ontwikkeling. Dit kan ''bètafase'' zijn wanneer het product nog niet is uitgebracht, of ''actief'', ''inactief'' en ''stopgezet'' indien het product reeds uitgebracht werd. +* categorie bevat het kernwoord dat beschrijft welk artikel het is. Bij Firefox is dit ''webbrowser'', bij Word is dit ''tekstverwerker''. +* De parameter versiebeheer wordt automatisch opgevuld via de Wikidata-eigenschap [[:wikidata:Property:P1324|P1324]]. +* De parameter geenbeta kan gebruikt worden om aan te geven dat er geen bètaversies getoond moet worden + +=== Extra parameters === +Als extra parameter kan portaal2 worden gebruikt om een tweede portaal toe te voegen. + +Voor met name webbrowsers kan layout-engine toegevoegd worden tussen besturingssysteem en programmeertaal: +
| layout-engine             = 
+Voor screenshots die een aangepaste breedte vereisen: +
| screenshotbreedte         = 
+ +Voor oude softwaretakken die nog onderhouden worden (zie [[onderhoudsversie]]): +
| onderhouds_versie         =
+| onderhouds_releasedatum   = 
+ +== Zie ook == +* [[Sjabloon:Infobox bestandsformaat]] +* [[Sjabloon:Infobox computerspel]] +* [[Sjabloon:Infobox besturingssysteem]] + +== Templatedata == + +{ + "format": "{{_\n| _________________________ = _\n}}", + "params": { + "naam": { + "label": "Naam", + "description": "Naam van de software", + "example": "Firefox", + "type": "line" + }, + "logo": { + "label": "Logo", + "description": "Logo van de software", + "type": "wiki-file-name" + }, + "screenshot": { + "label": "Screenshot", + "description": "Screenshot van de software", + "type": "wiki-file-name" + }, + "screenshotbreedte": { + "label": "Screenshotbreedte", + "description": "Alternatieve breedte van screenshot", + "type": "number" + }, + "onderschrift": { + "label": "Onderschrift", + "description": "Onderschrift bij de screenshot", + "type": "line" + }, + "ontwerper": { + "label": "ontwerper(s)", + "description": "Wie heeft de software ontworpen?", + "example": "Kevin Systrom", + "type": "line", + "suggested": true + }, + "ontwikkelaar": { + "label": "Ontwikkelaar", + "description": "Wie heeft de software ontwikkeld?", + "example": "Mozilla", + "type": "line", + "deprecated": "Gebruik Wikidata" + }, + "uitgebracht": { + "label": "Uitgebracht", + "description": "Wanneer is de software voor het eerst uitgebracht?", + "type": "date", + "deprecated": "Gebruik Wikidata" + }, + "laatste_versie": { + "label": "Laatste versie", + "description": "Wat is de recentste versie van de software?", + "type": "line", + "deprecated": "Gebruik Wikidata" + }, + "laatste_releasedatum": { + "label": "Laatste releasedatum", + "description": "Wanneer is de recentste versie uitgebracht?", + "type": "date", + "deprecated": "Gebruik Wikidata" + }, + "laatste_beta_versie": { + "label": "Laatste beta versie", + "description": "Wat is de recentste bètaversie van de software?", + "type": "line", + "deprecated": "Gebruik Wikidata" + }, + "laatste_beta_releasedatum": { + "label": "Laatste beta releasedatum", + "description": "Wanneer is de recentste bètaversie uitgebracht?", + "type": "date", + "deprecated": "Gebruik Wikidata" + }, + "onderhouds_versie": { + "label": "Onderhoudsversie", + "type": "line" + }, + "onderhouds_releasedatum": { + "label": "Onderhoudsreleasedatum", + "type": "date" + }, + "status": { + "label": "Status", + "type": "line", + "description": "Actief, inactief (meer dan 4 jaar geen updates meer) of stopgezet", + "suggestedvalues": [ + "Actief", + "Inactief", + "Stopgezet" + ], + "required": true + }, + "besturingssysteem": { + "label": "Besturingssysteem", + "description": "Voor welk(e) besturingssysteem/besturingssystemen is de software ontwikkeld?", + "type": "line" + }, + "layout-engine": { + "label": "Layout-engine", + "type": "line" + }, + "programmeertaal": { + "label": "Programmeertaal", + "description": "In welke programmeertaal is de software geschreven?", + "type": "line", + "deprecated": "Gebruik Wikidata" + }, + "categorie": { + "label": "Categorie", + "type": "line" + }, + "licentie": { + "label": "Licentie", + "type": "line", + "deprecated": "Gebruik Wikidata" + }, + "website": { + "label": "Website", + "description": "Wat is de officiële website van de software?", + "type": "url", + "deprecated": "Gebruik Wikidata" + }, + "website2": { + "label": "Extra website", + "description": "Wat is een officiële alternatieve website van de software?", + "type": "url", + "suggested": true + }, + "portaal2": { + "label": "Portaal2", + "description": "Een eventueel extra portaal waar de software in thuis hoort", + "type": "wiki-page-name" + }, + "versiebeheer": { + "label": "Versiebeheer", + "type": "url", + "deprecated": "Dit wordt automatisch toegevoegd uit property P1324 van het betreffende Wikidata-item, als dat aanwezig is" + }, + "geenbeta": { + "label": "Toon geen bètaversie", + "type": "boolean", + "description": "Indien er geen bètaversie getoond dient te worden, deze parameter invullen. Indien bèta wel getoond moet worden, parameter leeglaten." + }, + "afbeelding": { + "type": "wiki-file-name", + "label": "Afbeelding" + } + }, + "description": "Sjabloon voor eenduidige infobox voor software", + "paramOrder": [ + "naam", + "logo", + "screenshot", + "screenshotbreedte", + "onderschrift", + "afbeelding", + "ontwerper", + "ontwikkelaar", + "uitgebracht", + "laatste_versie", + "laatste_releasedatum", + "laatste_beta_versie", + "laatste_beta_releasedatum", + "geenbeta", + "onderhouds_versie", + "onderhouds_releasedatum", + "status", + "besturingssysteem", + "layout-engine", + "programmeertaal", + "categorie", + "licentie", + "website", + "website2", + "versiebeheer", + "portaal2" + ] +} + +}} + +[[Categorie:Wikipedia:Sjablonen informatica|Software]] +[[Categorie:Wikipedia:Sjablonen infobox|Software]] +
diff --git a/src/lib.rs b/src/lib.rs new file mode 100644 index 0000000..6e6f20f --- /dev/null +++ b/src/lib.rs @@ -0,0 +1,56 @@ +#[doc = include_str!("../README.md")] +pub mod wikipedia_infobox_analyzer { + use regex::Regex; + + /// Looks for a used template that does lists wikidata properties listing + pub fn extract_used_properties_from_template(template: String) -> Vec { + let lines = template.lines(); + let used = lines + .filter(|line| line.starts_with("{{Gebruikt Wikidata")) + .nth(0) + .expect("Template should have a line declaring which properties are used"); + + // The properties are listed inside the template with their number: P1|P2|P... + let re = Regex::new(r"P\d+").unwrap(); + + // Find all matches and collect into vector + let properties = re + .find_iter(used) + .map(|m| m.as_str().to_owned()) + .collect::>(); + + return properties; + } +} + +#[cfg(test)] +mod tests { + use super::wikipedia_infobox_analyzer::*; + use std::fs; + + #[test] + fn test_extract_used_properties_from_template() { + let contents = fs::read_to_string("examples/templates/nl_infobox_bedrijf") + .expect("Template file should exist"); + + assert_eq!( + extract_used_properties_from_template(contents), + vec![ + "P18", "P154", "P1128", "P4103", "P2139", "P2295", "P2226", "P856", "P169", + "P1448", "P159", "P749", "P355", "P17", "P1056", "P452", "P576", "P112", "P127", + "P856", "P2096" + ] + ); + + let contents = fs::read_to_string("examples/templates/nl_infobox_software") + .expect("Template file should exist"); + + assert_eq!( + extract_used_properties_from_template(contents), + vec![ + "P18", "P154", "P170", "P178", "P275", "P277", "P306", "P348", "P400", "P548", + "P571", "P577", "P856", "P1324", "P2096" + ] + ); + } +}