{"id":625,"date":"2009-12-26T00:11:39","date_gmt":"2009-12-25T23:11:39","guid":{"rendered":"https:\/\/www.entropywins.wtf\/blog\/?p=625"},"modified":"2009-12-26T00:11:39","modified_gmt":"2009-12-25T23:11:39","slug":"validator-0-2-released","status":"publish","type":"post","link":"https:\/\/www.entropywins.wtf\/blog\/2009\/12\/26\/validator-0-2-released\/","title":{"rendered":"Validator 0.2 released"},"content":{"rendered":"<p>Today I released <a href=\"http:\/\/www.mediawiki.org\/wiki\/Extension:Validator\" target=\"_blank\">Validator<\/a> version 0.2, on which I&#8217;ve been working the last 2 days. It features massive rewriting to make it more flexible, and has some added functionality. Let&#8217;s have a look at what changed.<\/p>\n<p><a href=\"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2009\/12\/validator-0.2-error-list.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-631\" title=\"Error feedback in the form of a list for Validator_ERRORS_SHOW or Validator_ERRORS_STRICT.\" src=\"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2009\/12\/validator-0.2-error-list.png\" alt=\"Error feedback in the form of a list for Validator_ERRORS_SHOW or Validator_ERRORS_STRICT.\" width=\"364\" height=\"78\" \/><\/a><\/p>\n<p>The most important change is, without any doubt, the new <a href=\"http:\/\/www.mediawiki.org\/wiki\/Extension:Validator#Lists\" target=\"_blank\"><strong>list support<\/strong><\/a>. Validator 0.1 had a list type, which allowed you to have enumerations of values and do crude validation on them. This version now supports lists of a type, instead of seeing list as a type. So you can now create lists of strings, lists of integers, and even lists of custom types you add. This new approach also allows per-item-validation and per-item-defaulting. This means you can set an in_array criteria, which will then be enforced for every value in your list. Closely related to this new form of list support are the new <a href=\"http:\/\/www.mediawiki.org\/wiki\/Extension:Validator#List_criteria\" target=\"_blank\">list criteria<\/a>, which allow you to validate lists as a whole. At the moment the only 2 build in list criteria are item_count and unique_items, but like for regular criteria, you can hook into Validator and add your own.<\/p>\n<p><a href=\"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2009\/12\/validator-0.2-per-item-validation-error.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-630\" title=\"Validator showing error feedback for a list parameter of the Maps extension.\" src=\"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2009\/12\/validator-0.2-per-item-validation-error.png\" alt=\"Validator showing error feedback for a list parameter of the Maps extension.\" width=\"600\" height=\"38\" \/><\/a><\/p>\n<p>Another important change are the <a href=\"http:\/\/www.mediawiki.org\/wiki\/Extension:Validator#Output_type\" target=\"_blank\"><strong>output formats<\/strong><\/a>. Output formats allow you to specify additional formatting that needs to be done with the parameter value, before it is retrieved from Validator. There are currently 6 build in types, which are array, list, boolean, boolstr, string and unique_items, but again you can hook into this list via Validator. The awesome thing about output formats is that it greatly reduces the mess you otherwise have with converting your parameters from user input to true data structures. You can even specify multiple output formats, which will then do their formatting one by one.<\/p>\n<p>Other things brought by Validator 0.2 include some new <a href=\"http:\/\/www.mediawiki.org\/wiki\/Extension:Validator#Criteria\" target=\"_blank\">criteria<\/a> (is_boolean, has_length and regex), a new <a href=\"http:\/\/www.mediawiki.org\/wiki\/Extension:Validator#Error_level\" target=\"_blank\">error level<\/a>, Validator_ERRORS_MINIMAL, new <a href=\"http:\/\/www.mediawiki.org\/wiki\/Extension:Validator#Type\" target=\"_blank\">parameter types<\/a> (boolean, number and char) and support for Validator_ERRORS_WARN in <a href=\"http:\/\/www.mediawiki.org\/wiki\/Extension:Validator#ValidatorManager_class\" target=\"_blank\">ValidatorManager<\/a>.<\/p>\n<p><a href=\"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2009\/12\/validatorParameterTypes.gif\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-635\" title=\"Validators parameter types as in version 0.2\" src=\"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2009\/12\/validatorParameterTypes.gif\" alt=\"\" width=\"602\" height=\"145\" \/><\/a><\/p>\n<p>Equally important as the changes made is that the documentation has been completely updated, to give in-depth cover of how Validator works, and <a href=\"http:\/\/www.mediawiki.org\/wiki\/Extension:Validator#Implementation\" target=\"_blank\">how you should use it<\/a>.<\/p>\n<p>Both <a href=\"http:\/\/www.mediawiki.org\/wiki\/Extension:Maps\" target=\"_blank\">Maps<\/a> and <a href=\"http:\/\/www.mediawiki.org\/wiki\/Extension:Semantic_Maps\" target=\"_blank\">Semantic Maps<\/a> 0.5.1 use Validator 0.2, allowing them to throw away a lot of repetitive, dumb manipulation, code that has been their since the initial versions of those extensions \ud83d\ude42<\/p>\n<p><strong>Downloads:<\/strong><\/p>\n<ul>\n<li><a href=\"http:\/\/code.bn2vs.com\/viewtopic.php?mode=attach&amp;id=251\" target=\"_blank\">Validator 0.2 (zip)<\/a><\/li>\n<li><a href=\"http:\/\/code.bn2vs.com\/viewtopic.php?mode=attach&amp;id=250\" target=\"_blank\">Validator 0.2 (7z)<\/a><\/li>\n<li><a href=\"http:\/\/svn.wikimedia.org\/viewvc\/mediawiki\/tags\/extensions\/Validator\/REL_0_2\/\" target=\"_blank\">Validator 0.2 SVN tag<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Today I released Validator version 0.2, on which I&#8217;ve been working the last 2 days. It features massive rewriting to&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[7],"tags":[91,156,181,195,215,271,272,285],"class_list":["post-625","post","type-post","status-publish","format-standard","hentry","category-programming","tag-extension","tag-mediawiki","tag-open-source","tag-php","tag-refactoring","tag-validation","tag-validator","tag-wikimedia"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.0 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Validator 0.2 released - Blog of Jeroen De Dauw<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.entropywins.wtf\/blog\/2009\/12\/26\/validator-0-2-released\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Validator 0.2 released - Blog of Jeroen De Dauw\" \/>\n<meta property=\"og:description\" content=\"Today I released Validator version 0.2, on which I&#8217;ve been working the last 2 days. It features massive rewriting to&hellip;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.entropywins.wtf\/blog\/2009\/12\/26\/validator-0-2-released\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog of Jeroen De Dauw\" \/>\n<meta property=\"article:published_time\" content=\"2009-12-25T23:11:39+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2009\/12\/validator-0.2-error-list.png\" \/>\n<meta name=\"author\" content=\"Jeroen\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@https:\/\/twitter.com\/JeroenDeDauw\" \/>\n<meta name=\"twitter:site\" content=\"@JeroenDeDauw\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jeroen\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/2009\/12\/26\/validator-0-2-released\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/2009\/12\/26\/validator-0-2-released\/\"},\"author\":{\"name\":\"Jeroen\",\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/4e2ef14f2ca7dc3a0ac137d1692b66b7\"},\"headline\":\"Validator 0.2 released\",\"datePublished\":\"2009-12-25T23:11:39+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/2009\/12\/26\/validator-0-2-released\/\"},\"wordCount\":385,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/4e2ef14f2ca7dc3a0ac137d1692b66b7\"},\"image\":{\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/2009\/12\/26\/validator-0-2-released\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2009\/12\/validator-0.2-error-list.png\",\"keywords\":[\"extension\",\"MediaWiki\",\"Open Source\",\"PHP\",\"Refactoring\",\"Validation\",\"Validator\",\"Wikimedia\"],\"articleSection\":[\"Programming\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.entropywins.wtf\/blog\/2009\/12\/26\/validator-0-2-released\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/2009\/12\/26\/validator-0-2-released\/\",\"url\":\"https:\/\/www.entropywins.wtf\/blog\/2009\/12\/26\/validator-0-2-released\/\",\"name\":\"Validator 0.2 released - Blog of Jeroen De Dauw\",\"isPartOf\":{\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/2009\/12\/26\/validator-0-2-released\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/2009\/12\/26\/validator-0-2-released\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2009\/12\/validator-0.2-error-list.png\",\"datePublished\":\"2009-12-25T23:11:39+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/2009\/12\/26\/validator-0-2-released\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.entropywins.wtf\/blog\/2009\/12\/26\/validator-0-2-released\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/2009\/12\/26\/validator-0-2-released\/#primaryimage\",\"url\":\"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2009\/12\/validator-0.2-error-list.png\",\"contentUrl\":\"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2009\/12\/validator-0.2-error-list.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/2009\/12\/26\/validator-0-2-released\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.entropywins.wtf\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Validator 0.2 released\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/#website\",\"url\":\"https:\/\/www.entropywins.wtf\/blog\/\",\"name\":\"Entropy Wins\",\"description\":\"A blog on Software Architecture, Design and Craftsmanship\",\"publisher\":{\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/4e2ef14f2ca7dc3a0ac137d1692b66b7\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.entropywins.wtf\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/4e2ef14f2ca7dc3a0ac137d1692b66b7\",\"name\":\"Jeroen\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/d62e6b5b8e332335cf17854fac850d9c70ba367c4692872613c3110ebd4e009b?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/d62e6b5b8e332335cf17854fac850d9c70ba367c4692872613c3110ebd4e009b?s=96&d=mm&r=g\",\"caption\":\"Jeroen\"},\"logo\":{\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/image\/\"},\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/jeroendedauw\/\",\"https:\/\/x.com\/https:\/\/twitter.com\/JeroenDeDauw\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Validator 0.2 released - Blog of Jeroen De Dauw","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.entropywins.wtf\/blog\/2009\/12\/26\/validator-0-2-released\/","og_locale":"en_US","og_type":"article","og_title":"Validator 0.2 released - Blog of Jeroen De Dauw","og_description":"Today I released Validator version 0.2, on which I&#8217;ve been working the last 2 days. It features massive rewriting to&hellip;","og_url":"https:\/\/www.entropywins.wtf\/blog\/2009\/12\/26\/validator-0-2-released\/","og_site_name":"Blog of Jeroen De Dauw","article_published_time":"2009-12-25T23:11:39+00:00","og_image":[{"url":"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2009\/12\/validator-0.2-error-list.png","type":"","width":"","height":""}],"author":"Jeroen","twitter_card":"summary_large_image","twitter_creator":"@https:\/\/twitter.com\/JeroenDeDauw","twitter_site":"@JeroenDeDauw","twitter_misc":{"Written by":"Jeroen","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.entropywins.wtf\/blog\/2009\/12\/26\/validator-0-2-released\/#article","isPartOf":{"@id":"https:\/\/www.entropywins.wtf\/blog\/2009\/12\/26\/validator-0-2-released\/"},"author":{"name":"Jeroen","@id":"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/4e2ef14f2ca7dc3a0ac137d1692b66b7"},"headline":"Validator 0.2 released","datePublished":"2009-12-25T23:11:39+00:00","mainEntityOfPage":{"@id":"https:\/\/www.entropywins.wtf\/blog\/2009\/12\/26\/validator-0-2-released\/"},"wordCount":385,"commentCount":0,"publisher":{"@id":"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/4e2ef14f2ca7dc3a0ac137d1692b66b7"},"image":{"@id":"https:\/\/www.entropywins.wtf\/blog\/2009\/12\/26\/validator-0-2-released\/#primaryimage"},"thumbnailUrl":"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2009\/12\/validator-0.2-error-list.png","keywords":["extension","MediaWiki","Open Source","PHP","Refactoring","Validation","Validator","Wikimedia"],"articleSection":["Programming"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.entropywins.wtf\/blog\/2009\/12\/26\/validator-0-2-released\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.entropywins.wtf\/blog\/2009\/12\/26\/validator-0-2-released\/","url":"https:\/\/www.entropywins.wtf\/blog\/2009\/12\/26\/validator-0-2-released\/","name":"Validator 0.2 released - Blog of Jeroen De Dauw","isPartOf":{"@id":"https:\/\/www.entropywins.wtf\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.entropywins.wtf\/blog\/2009\/12\/26\/validator-0-2-released\/#primaryimage"},"image":{"@id":"https:\/\/www.entropywins.wtf\/blog\/2009\/12\/26\/validator-0-2-released\/#primaryimage"},"thumbnailUrl":"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2009\/12\/validator-0.2-error-list.png","datePublished":"2009-12-25T23:11:39+00:00","breadcrumb":{"@id":"https:\/\/www.entropywins.wtf\/blog\/2009\/12\/26\/validator-0-2-released\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.entropywins.wtf\/blog\/2009\/12\/26\/validator-0-2-released\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.entropywins.wtf\/blog\/2009\/12\/26\/validator-0-2-released\/#primaryimage","url":"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2009\/12\/validator-0.2-error-list.png","contentUrl":"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2009\/12\/validator-0.2-error-list.png"},{"@type":"BreadcrumbList","@id":"https:\/\/www.entropywins.wtf\/blog\/2009\/12\/26\/validator-0-2-released\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.entropywins.wtf\/blog\/"},{"@type":"ListItem","position":2,"name":"Validator 0.2 released"}]},{"@type":"WebSite","@id":"https:\/\/www.entropywins.wtf\/blog\/#website","url":"https:\/\/www.entropywins.wtf\/blog\/","name":"Entropy Wins","description":"A blog on Software Architecture, Design and Craftsmanship","publisher":{"@id":"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/4e2ef14f2ca7dc3a0ac137d1692b66b7"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.entropywins.wtf\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/4e2ef14f2ca7dc3a0ac137d1692b66b7","name":"Jeroen","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/d62e6b5b8e332335cf17854fac850d9c70ba367c4692872613c3110ebd4e009b?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d62e6b5b8e332335cf17854fac850d9c70ba367c4692872613c3110ebd4e009b?s=96&d=mm&r=g","caption":"Jeroen"},"logo":{"@id":"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/image\/"},"sameAs":["https:\/\/www.linkedin.com\/in\/jeroendedauw\/","https:\/\/x.com\/https:\/\/twitter.com\/JeroenDeDauw"]}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p74TBF-a5","jetpack-related-posts":[{"id":579,"url":"https:\/\/www.entropywins.wtf\/blog\/2009\/12\/12\/you-will-be-validated-resistance-is-futile\/","url_meta":{"origin":625,"position":0},"title":"You will be validated. Resistance is futile.","author":"Jeroen","date":"2009-12-12","format":false,"excerpt":"It has been over a week since I posted about any MediaWiki stuff, which can very well be a record since I started my blog. The reason for this is cause I've been busy with a lot of projects. You'll hear about them all later on, but now I just\u2026","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/www.entropywins.wtf\/blog\/category\/programming\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":616,"url":"https:\/\/www.entropywins.wtf\/blog\/2009\/12\/17\/maps-and-semantic-maps-0-5-released\/","url_meta":{"origin":625,"position":1},"title":"Maps and Semantic Maps 0.5 released","author":"Jeroen","date":"2009-12-17","format":false,"excerpt":"Earlier today, versions 0.5 of Maps and Semantic Maps where released. Some mayor new features where added, and a whole bunch of things have been refactored. I also did some effort to improve the documentation by adding some screencasts and revising the developer docs. Version 0.4.2 proved to be pretty\u2026","rel":"","context":"In \"Geocoding\"","block_context":{"text":"Geocoding","link":"https:\/\/www.entropywins.wtf\/blog\/tag\/geocoding\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1052,"url":"https:\/\/www.entropywins.wtf\/blog\/2011\/01\/01\/new-mediawiki-extension-subpagelist\/","url_meta":{"origin":625,"position":2},"title":"New MediaWiki extension: SubPageList","author":"Jeroen","date":"2011-01-01","format":false,"excerpt":"During 27c3 someone asked me to install an extension to list subpages onto the hackerspace.be wiki. I picked SubPageList3, as it seemed to most decent one. I did a simple test to see if it was working, and immediately found a namespace bug. So I decided to quickly rewrite it\u2026","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/www.entropywins.wtf\/blog\/category\/programming\/"},"img":{"alt_text":"SubPageList extension","src":"https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2011\/01\/Splist_1.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":1056,"url":"https:\/\/www.entropywins.wtf\/blog\/2011\/01\/11\/validator-0-4-3introducing-auto-documentation\/","url_meta":{"origin":625,"position":3},"title":"Validator 0.4.3:introducing auto-documentation","author":"Jeroen","date":"2011-01-11","format":false,"excerpt":"It's been a while since the previous release of Validator, but this minor update includes some cool new functionality. As I was creating the SubPageList extension and it's documentation (at 27c3!), it occurred to me that to document the usage of the <subpages \/> parser hook, all the info I\u2026","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/www.entropywins.wtf\/blog\/category\/programming\/"},"img":{"alt_text":"Some documentation (for the coordinates parser function) generated using the describe parser hook","src":"https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2011\/01\/describe-coordinates-table.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2011\/01\/describe-coordinates-table.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2011\/01\/describe-coordinates-table.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2011\/01\/describe-coordinates-table.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":1149,"url":"https:\/\/www.entropywins.wtf\/blog\/2013\/11\/22\/paramprocessor-1-0-released\/","url_meta":{"origin":625,"position":4},"title":"ParamProcessor 1.0 released","author":"Jeroen","date":"2013-11-22","format":false,"excerpt":"I\u2019m happy to announce the first release of the ParamProcessor library. ParamProcessor is a parameter processing library that provides a way to decoratively define a set of parameters and how they should be processed. It can take such declarations together with a list of raw parameters and provide the processed\u2026","rel":"","context":"Similar post","block_context":{"text":"Similar post","link":""},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1003,"url":"https:\/\/www.entropywins.wtf\/blog\/2010\/10\/06\/maps-and-semantic-maps-0-7-beta-1\/","url_meta":{"origin":625,"position":5},"title":"Maps and Semantic Maps 0.7 beta 1","author":"Jeroen","date":"2010-10-06","format":false,"excerpt":"An early beta of the next big release of the Maps and Semantic Maps extensions is now available for download. The most notable new features in this release are tag extension support for all the Maps parser functions, more consistent error handling via Validator 0.4 and compatibility with the upcoming\u2026","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/www.entropywins.wtf\/blog\/category\/programming\/"},"img":{"alt_text":"Semantic Maps reporting a fatal error in a map form input.","src":"..\/wp-content\/uploads\/2010\/10\/fatal-form-error.png","width":350,"height":200},"classes":[]}],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/posts\/625","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/comments?post=625"}],"version-history":[{"count":0,"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/posts\/625\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/media?parent=625"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/categories?post=625"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/tags?post=625"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}