{"id":1609,"date":"2020-08-27T15:46:49","date_gmt":"2020-08-27T15:46:49","guid":{"rendered":"https:\/\/www.numbas.org.uk\/?p=1609"},"modified":"2020-10-29T11:28:55","modified_gmt":"2020-10-29T11:28:55","slug":"development-update-august-2020","status":"publish","type":"post","link":"https:\/\/www.numbas.org.uk\/theme-testing\/blog\/2020\/08\/development-update-august-2020\/","title":{"rendered":"Development update: August 2020"},"content":{"rendered":"\n<p>We&#8217;re continually working on Numbas, fixing bugs and adding new features. I thought that it would be a good idea to post more regularly about updates to the Numbas software, rather than waiting until each year&#8217;s major version release to list everything that&#8217;s changed.<\/p>\n\n\n\n<p>I&#8217;m going to go into a bit more detail on changes than I normally would in major-release posts, to give an idea of what day-to-day development on Numbas looks like.<\/p>\n\n\n\n<p>I&#8217;d like these posts to be monthly, but I&#8217;m about to embark on a month of paternity leave, so don&#8217;t expect another one until the end of October.<\/p>\n\n\n\n<p>So, here&#8217;s what&#8217;s changed since Numbas v5.0 was released in June.<\/p>\n\n\n\n<!--more-->\n\n\n\n<h2>Numbas runtime<\/h2>\n\n\n\n<h3>General<\/h3>\n\n\n\n<ul><li><strong>Enhancement:<\/strong> The logic around the question &#8220;how long is this variable name?&#8221; has been improved greatly. This matters when you&#8217;re using things like Greek letters, which take several characters to write in JME, but are displayed as a single symbol. (<a href=\"https:\/\/github.com\/numbas\/Numbas\/commit\/451f37adfa81683145fef41d1b7b2146740d813d\">code<\/a>)<\/li><li><strong>Enhancement: <\/strong>The &#8216;expand juxtapositions&#8217; logic (used to implement the implicit multiplication and composition rules) makes use of this enhanced logic to better split up long names into single-letter variables. (<a href=\"https:\/\/github.com\/numbas\/Numbas\/commit\/66a867e71a23c154db9aa43881df7cf4002ae4bc\">code<\/a>)<\/li><li><strong>Bugfix: <\/strong>The &#8220;scientific notation&#8221; number notation style no longer puts spaces between groups of digits. (<a href=\"https:\/\/github.com\/numbas\/Numbas\/commit\/948d25e95524447728e8f64fb876ab302a259216\">code<\/a>)<\/li><\/ul>\n\n\n\n<h3>Interface<\/h3>\n\n\n\n<ul><li><strong>Enhancement:<\/strong> Updated the translations, adding Indonesian.<\/li><li><strong>Enhancement:<\/strong> When you end the exam, you&#8217;re now always shown the &#8220;results&#8221; screen &#8211; the &#8220;you may close this window&#8221; screen is no more. Whether you see the question score breakdown depends on the &#8220;show the results page&#8221; exam option. This means that students are now always shown the button to print a transcript of their exam, even if they don&#8217;t get any feedback. (<a href=\"https:\/\/github.com\/numbas\/Numbas\/commit\/34de623836d6ac6b49c5bf54895ef7637470ca21\">code<\/a>)<\/li><li><strong>Enhancement: <\/strong>The default theme now has a <a href=\"https:\/\/en.wikipedia.org\/wiki\/Favicon\">favicon<\/a>. (<a href=\"https:\/\/github.com\/numbas\/Numbas\/commit\/d85a8660f42cc7348435c719eefadce77d23457c\">code<\/a>)<\/li><li><strong>Bugfix: <\/strong>Content areas containing only an image or an iframe no longer count as &#8217;empty&#8217;. (<a href=\"https:\/\/github.com\/numbas\/Numbas\/commit\/7669bc966a3175938b5f2e800a04d13f18815b9a\">code<\/a>)<\/li><\/ul>\n\n\n\n<h3>Marking<\/h3>\n\n\n\n<ul><li><strong>Enhancement:<\/strong> For part types that do some parsing (mathematical expression, number entry, matrix entry), the <code>interpreted_answer<\/code> note now fails if the student&#8217;s answer is not valid. This matters in explore mode, or in complicated gap-fill marking algorithms. (<a href=\"https:\/\/github.com\/numbas\/Numbas\/commit\/df2eb2fbf28b05cf7548edd27ed3e6b94c3e9679\">code<\/a>)<\/li><li><strong>Enhancement:<\/strong> The &#8220;extension&#8221; part type no longer assumes you&#8217;re going to write a custom marking script in JavaScript &#8211; you can write a JME marking algorithm instead. The GeoGebra extension now uses this, providing some JME functions to query a worksheet. (<a href=\"https:\/\/github.com\/numbas\/Numbas\/commit\/b022c32b998ac46059f22952ed13f06eaef07041\">code<\/a>)<\/li><\/ul>\n\n\n\n<h3>JME<\/h3>\n\n\n\n<h4>New functions<\/h4>\n\n\n\n<ul><li><code><a href=\"https:\/\/docs.numbas.org.uk\/en\/latest\/jme-reference.html#reorder\">reorder<\/a><\/code> and <code><a href=\"https:\/\/docs.numbas.org.uk\/en\/latest\/jme-reference.html#shuffle_together\">shuffle_together<\/a><\/code> make it easier to take several lists and apply the same permutation to them. (<a href=\"https:\/\/github.com\/numbas\/Numbas\/issues\/724\">issue<\/a>)<\/li><li><code><a href=\"https:\/\/docs.numbas.org.uk\/en\/latest\/jme-reference.html#replace_regex\">replace_regex<\/a><\/code> replaces all substrings that match the given regular expression with a given value.<\/li><li><code><a href=\"https:\/\/docs.numbas.org.uk\/en\/latest\/jme-reference.html#atan2\">atan2(y,x)<\/a><\/code> implements the widely-used function which is equivalent to $\\arctan(y\/x)$, but ensures the result is in the right quadrant.<\/li><\/ul>\n\n\n\n<h4>Other changes<\/h4>\n\n\n\n<ul><li><strong>Enhancement:<\/strong> The <code>random<\/code> function returns an integer when given a range of integers. (<a href=\"https:\/\/github.com\/numbas\/Numbas\/issues\/717\">issue<\/a>)<\/li><li><strong>Enhancement:<\/strong> The functions <code>ceil<\/code>, <code>round<\/code> and <code>floor<\/code> return <code>integer<\/code> values, not <code>number<\/code>. (<a href=\"https:\/\/github.com\/numbas\/Numbas\/commit\/0dcc4177f3bf71cc7b74d54307adc1da5e6a853c\">code<\/a>, <a href=\"https:\/\/github.com\/numbas\/Numbas\/issues\/721\">issue<\/a>)<\/li><li><strong>Enhancement:<\/strong> When substituting values into content areas, data types that can automatically convert to HTML do so. This makes it more convenient to use the new <code>geogebra<\/code> data type provided by the GeoGebra extension. (<a href=\"https:\/\/github.com\/numbas\/Numbas\/commit\/4cdf3ce968364b59c1c2d7a90a9d4384d5bb9c6c\">code<\/a>)<\/li><li><strong>Enhancement:<\/strong> Within a part (content areas and the marking algorithm), the JME variable <code>part_path<\/code> is now defined, giving the unique ID of the part. Interactive elements such as GeoGebra worksheets can use this value to link to the part they&#8217;re embedded in. (<a href=\"https:\/\/github.com\/numbas\/Numbas\/commit\/bb946e7f62ed365499a735d0fbbfad7de7e30722\">code<\/a>)<\/li><li><strong>Bugfix: <\/strong>The output of <code>dpformat<\/code> and <code>sigformat<\/code> functions is displayed as plain text when substituted using curly braces, or TeX code when substituted inside a LaTeX environment. (<a href=\"https:\/\/github.com\/numbas\/Numbas\/commit\/192f7547360265fb1c11e64df345de3b506e32c2\">code<\/a>)<\/li><li><strong>Bugfix: <\/strong>Upper-case Greek letters in JME expressions are displayed in upper-case. Previously they were incorrectly converted to lower-case. (<a href=\"https:\/\/github.com\/numbas\/Numbas\/commit\/4b915e9959c74a7ba74f65d67bc3fb85f63a3a09\">code<\/a>)<\/li><li><strong>Bugfix: <\/strong>Rational values are displayed as fractions, rather than decimals. (<a href=\"https:\/\/github.com\/numbas\/Numbas\/commit\/ee7c5de36cdb8c0f6d286d4ebda991674efd8c03\">code<\/a>)<\/li><li><strong>Bugfix: <\/strong>The <code>exec<\/code> function now evaluates lazily, so it doesn&#8217;t try to evaluate function tokens. It&#8217;s still quite awkward to use, so I prefer <code>substitute<\/code>. (<a href=\"https:\/\/github.com\/numbas\/Numbas\/commit\/bb9b8f39f00a26ea37116badd9b5ef88f87ff39e\">code<\/a>)<\/li><li><strong>Enhancement: <\/strong>You can define several variables at once: write a list of names separated by commas, and ensure that the definition produces a list of at least that many items. This makes it much easier to work with &#8220;scenario&#8221; questions, where you&#8217;ve got a finite list of scenarios to choose from, each with several associated variable values. (<a href=\"https:\/\/github.com\/numbas\/Numbas\/commit\/fcf4188024a52805be8f9b380e793754cac51cd3\">code<\/a>)<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"1024\" height=\"411\" src=\"https:\/\/www.numbas.org.uk\/wp-content\/uploads\/2020\/08\/EfyLx9IXoAQ60gu-1024x411.png\" alt=\"Variable editor interface. The name field contains &quot;a,b,c&quot; and the value field &quot;shuffle(1..10)&quot;. The description says &quot;Three distinct numbers between 1 and 10&quot;. On the right, the variable preview shows three rows a,b and c with generated values 5, 10 and 1.\" class=\"wp-image-1611\" srcset=\"https:\/\/www.numbas.org.uk\/wp-content\/uploads\/2020\/08\/EfyLx9IXoAQ60gu-1024x411.png 1024w, https:\/\/www.numbas.org.uk\/wp-content\/uploads\/2020\/08\/EfyLx9IXoAQ60gu-300x121.png 300w, https:\/\/www.numbas.org.uk\/wp-content\/uploads\/2020\/08\/EfyLx9IXoAQ60gu-768x309.png 768w, https:\/\/www.numbas.org.uk\/wp-content\/uploads\/2020\/08\/EfyLx9IXoAQ60gu-600x241.png 600w, https:\/\/www.numbas.org.uk\/wp-content\/uploads\/2020\/08\/EfyLx9IXoAQ60gu.png 1486w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul><li><strong>Bugfix: <\/strong>The <code>scientificnumberlatex<\/code> function marks its output as &#8220;safe&#8221;, so the curly braces around the exponent don&#8217;t get interpreted as variable substitution. (<a href=\"https:\/\/github.com\/numbas\/Numbas\/commit\/bbde1df48f87b34e4e694b79f47601e8d91379b7\">code<\/a>)<\/li><li><strong>Bugfix: <\/strong>Expressions with a complex number on the left-hand side, such as <code>i*x<\/code>, don&#8217;t omit the multiplication symbol. (<a href=\"https:\/\/github.com\/numbas\/Numbas\/commit\/0108e1f4e7f12e1deb8c21d7e42278dde6d69004\">code<\/a>)<\/li><\/ul>\n\n\n\n<h3>JavaScript:<\/h3>\n\n\n\n<ul><li><strong>Bugfix: <\/strong>The question signal <code>HTMLAttached<\/code> only fires after all the question&#8217;s HTML has been attached, including parts. (<a href=\"https:\/\/github.com\/numbas\/Numbas\/commit\/6868237c767f03098f7f099cc6cd1da99a469696\">code<\/a>)<\/li><li><strong>Bugfix:<\/strong> When loading a mathematical expression part, the &#8216;answer simplification string&#8217; setting has a default value. (<a href=\"https:\/\/github.com\/numbas\/Numbas\/commit\/308b5d42d5fa040ea32357ca5ba4113f06b93004\">code<\/a>)<\/li><li><strong>Bugfix:<\/strong> <code>Part.markAlternatives<\/code> copes with the marking function returning an invalid result. (This affected old questions with custom JavaScript marking scripts) (<a href=\"https:\/\/github.com\/numbas\/Numbas\/commit\/cb2ca853ce36010bf97e4440d67d2bde77acfbed\">code<\/a>)<\/li><li><strong>Enhancement:<\/strong> When a JME marking algorithm produces an error, it&#8217;s exposed in the result object. This allows the editor to show the error in detail rather than just &#8220;the answer is invalid&#8221;. (<a href=\"https:\/\/github.com\/numbas\/Numbas\/commit\/2ca53afcbece1ebf8598f858a3cdeb77cf8fd6ea\">code<\/a>)<\/li><li><strong>Bugfix:<\/strong> <code>jme.calculus.differentiate<\/code> now checks for compatible types, rather than being fixed to the &#8216;number&#8217; data type. This makes it work on the number-like types such as integer, rational and decimal. (<a href=\"https:\/\/github.com\/numbas\/Numbas\/commit\/2ca53afcbece1ebf8598f858a3cdeb77cf8fd6ea\">code<\/a>)<\/li><li><strong>Bugfix:<\/strong> &#8230; and I fixed the partial differentiation rules, which never properly worked. (<a href=\"https:\/\/github.com\/numbas\/Numbas\/commit\/d7ddc487bb86341441cd2065d65972b0f9a122e9\">code<\/a>)<\/li><li><strong>Enhancement:<\/strong> JME function signature definitions can label arguments, to make it easier to establish which optional arguments have been provided. (<a href=\"https:\/\/github.com\/numbas\/Numbas\/commit\/05a97f082624b68040e7f93991c974bbe8589acf\">code<\/a>)<\/li><li><strong>Enhancement:<\/strong> Within a JME function signature, you can specify a list with optional entries. (<a href=\"https:\/\/github.com\/numbas\/Numbas\/commit\/90605530fd9099f374b3f84a1de3d3e00350049f\">code<\/a>)<\/li><li><strong>Bugfix:<\/strong> When casting the arguments to a function to match a signature, list elements are also cast. (<a href=\"https:\/\/github.com\/numbas\/Numbas\/commit\/3f8bfcd24db70e03cd9bdc429f9784b04f563488\">code<\/a>)<\/li><\/ul>\n\n\n\n<h3>Extensions<\/h3>\n\n\n\n<ul><li>I almost entirely rewrote <a href=\"https:\/\/github.com\/numbas\/numbas-extension-geogebra\">the GeoGebra extension<\/a>. You can now create a GeoGebra worksheet entirely in JME or from a .ggb file uploaded as a question resource, rather than loading a worksheet from geogebra.org. The link between worksheets and parts has been improved &#8211; you can fill in the input for a number entry or matrix entry part with the value of a GeoGebra variable, and you can query a GeoGebra worksheet from within a part&#8217;s marking algorithm. (<a href=\"https:\/\/numbas.mathcentre.ac.uk\/extensions\/41\/documentation\">Documentation<\/a>, <a href=\"https:\/\/numbas.mathcentre.ac.uk\/exam\/3510\/geogebra-extension-demo\/preview\/\">demo questions<\/a>)<\/li><li>I spent some time improving <a href=\"https:\/\/github.com\/numbas\/numbas-extension-jsxgraph\">the JSXGraph extension<\/a>, but didn&#8217;t get quite as far as I did with GeoGebra. You can now create a JSXGraph diagram entirely in JME, or using JSXGraph&#8217;s JessieScript language. (<a href=\"https:\/\/numbas.mathcentre.ac.uk\/extensions\/2\/documentation\">Documentation<\/a>, <a href=\"https:\/\/numbas.mathcentre.ac.uk\/exam\/652\/jsxgraph-demo\/preview\/\">demo questions<\/a>)<\/li><li>I fixed a couple of bugs in <a href=\"https:\/\/github.com\/numbas\/numbas-extension-eukleides\">the Eukleides extension<\/a>.<\/li><li>I added some new functions to <a href=\"https:\/\/github.com\/numbas\/numbas-extension-permutations\">the permutations extension<\/a>, and a custom part type which assesses a permutation written in cycle notation. I don&#8217;t have a public demo of this extension, sorry!<\/li><li>Prompted by a request on the numbas-users list, I wrote a small extension which provides a function to write a number out in words. (<a href=\"https:\/\/numbas.mathcentre.ac.uk\/extensions\/180\/documentation\">Documentation<\/a>, <a href=\"https:\/\/numbas.mathcentre.ac.uk\/question\/66389\/written-number-extension\/\">demo<\/a>)<\/li><\/ul>\n\n\n\n<h3>Outstanding issues<\/h3>\n\n\n\n<p>There are <a href=\"https:\/\/github.com\/numbas\/Numbas\/issues\">93 open issues on GitHub<\/a>, 18 of which were added after v5.0 was released.<\/p>\n\n\n\n<h2>Numbas editor<\/h2>\n\n\n\n<h3>Enhancements<\/h3>\n\n\n\n<ul><li>Superusers no longer see every extension in the question editor. (This is an enhancement for me, because I was seeing dozens!) (<a href=\"https:\/\/github.com\/numbas\/editor\/commit\/c71cf70f10d4f341ade62c17cc3cf9527498a561\">code<\/a>)<\/li><li>When testing a part&#8217;s marking algorithm, errors in the <code>mark<\/code> note are caught and displayed, rather than just saying &#8220;your answer is invalid.&#8221; This makes it easier to debug marking algorithms. (<a href=\"https:\/\/github.com\/numbas\/editor\/commit\/70e0f177592baa7c2e8a614de085b0944afd98f0\">code<\/a>)<\/li><li>In the non-editing view of a gap-fill part&#8217;s prompt, gaps are displayed nicely as boxes with the gap&#8217;s name, rather than a number inside square brackets. (<a href=\"https:\/\/github.com\/numbas\/editor\/issues\/521\">issue<\/a>)<\/li><li>When you upload an image as a question resource, you&#8217;re asked to give a text alternative for anyone who can&#8217;t see the image. (<a href=\"https:\/\/github.com\/numbas\/editor\/issues\/519\">issue<\/a>)<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" src=\"https:\/\/www.numbas.org.uk\/wp-content\/uploads\/2020\/08\/EfyAuUhWsAA3kEd.png\" alt=\"Screenshot of editor interface. On the left is an image, and on the right are two fields labelled &quot;URL&quot; and &quot;Text alternative&quot;\" class=\"wp-image-1612\" width=\"580\" height=\"172\" srcset=\"https:\/\/www.numbas.org.uk\/wp-content\/uploads\/2020\/08\/EfyAuUhWsAA3kEd.png 759w, https:\/\/www.numbas.org.uk\/wp-content\/uploads\/2020\/08\/EfyAuUhWsAA3kEd-300x89.png 300w, https:\/\/www.numbas.org.uk\/wp-content\/uploads\/2020\/08\/EfyAuUhWsAA3kEd-600x179.png 600w\" sizes=\"(max-width: 580px) 100vw, 580px\" \/><\/figure>\n\n\n\n<ul><li>There&#8217;s now a &#8220;long plain text string&#8221; definition template for variables. This makes it easier to store strings that span multiple lines. I&#8217;m always keen to add new templates for the variable editor. (<a href=\"https:\/\/github.com\/numbas\/editor\/issues\/504\">issue<\/a>)<\/li><li>The editor now uses Django 3.1 and other Python dependencies are up to date. (<a href=\"https:\/\/github.com\/numbas\/editor\/commit\/d6f454266f8ec725fe6a3922bf037f31a11e8167\">code<\/a>)<\/li><\/ul>\n\n\n\n<h3>Bug fixes<\/h3>\n\n\n\n<ul><li>When editing a new file in an extension, it&#8217;s included in the list of files. (<a href=\"https:\/\/github.com\/numbas\/editor\/issues\/517\">issue<\/a>)<\/li><li>The list of files in an extension is shown when viewing the <em>Options<\/em> and <em>Access<\/em> tabs. (<a href=\"https:\/\/github.com\/numbas\/Numbas\/issues\/718\">issue<\/a>)<\/li><li>The item preview and embed views now have a favicon like other pages. (<a href=\"https:\/\/github.com\/numbas\/editor\/commit\/07eb82558e5defdafd5b4d2bdc20c28a7cd10f17\">code<\/a>)<\/li><li>When you click to write a comment, the rich text editor loads immediately, rather than requiring another click. (<a href=\"https:\/\/github.com\/numbas\/editor\/issues\/525\">issue<\/a>)<\/li><li>Fixed the help link for the mathematical expression part setting &#8220;pattern student&#8217;s answer must match&#8221;. (<a href=\"https:\/\/github.com\/numbas\/editor\/issues\/522\">issue<\/a>)<\/li><li>The &#8220;Parts mode&#8221; select box when creating a question is now styled the same as other select boxes. (<a href=\"https:\/\/github.com\/numbas\/editor\/commit\/2a186f9e0b85c0446c1bdea95f62eab9f3459629\">code<\/a>)<\/li><\/ul>\n\n\n\n<h3>Outstanding issues<\/h3>\n\n\n\n<p>There are <a href=\"https:\/\/github.com\/numbas\/editor\/issues\">42 open issues on GitHub<\/a>, 6 of which were opened after v5.0 was released.<\/p>\n\n\n\n<h2>Numbas LTI provider<\/h2>\n\n\n\n<p>We released <a href=\"https:\/\/www.numbas.org.uk\/blog\/2020\/08\/numbas-lti-provider-v2-7\/\">version 2.7 of the LTI provider<\/a>. It adds a global dashboard view, an option to only show completed attempts when viewing the statistics for a resource, client-side completion receipt codes for attempts, and some bug fixes around time zone handling, sending email receipts on attempt completion, cross-site security and text formatting.<\/p>\n\n\n\n<p>There are <a href=\"https:\/\/github.com\/numbas\/numbas-lti-provider\/issues\">32 open issues on GitHub<\/a>, one of which was opened after v5.0 was released.<\/p>\n\n\n\n<h2>Documentation<\/h2>\n\n\n\n<ul><li>There&#8217;s now <a href=\"https:\/\/docs.numbas.org.uk\/en\/latest\/tutorials\/training-recordings.html\">a page of recorded training sessions<\/a>.<\/li><li>Documented the <code><a href=\"https:\/\/github.com\/numbas\/editor\/commit\/30015195e7fff097c5293b27f5487988d77474ce\">warn<\/a><\/code> marking function.<\/li><li>Added <a href=\"https:\/\/docs.numbas.org.uk\/en\/latest\/jme-reference.html#parse\">a note about how the <code>expression<\/code> function works<\/a>, prompted by an email to the numbas-users list.<\/li><li>I started writing more question-writing tutorials, to help new users. There&#8217;s now a <a href=\"https:\/\/docs.numbas.org.uk\/en\/latest\/authoring\/example-gallery\/index.html\">&#8220;gallery of example questions&#8221;<\/a>, which currently has one example: <a href=\"https:\/\/docs.numbas.org.uk\/en\/latest\/authoring\/example-gallery\/index.html\">a question assessing standard integrals<\/a>. I also thought it would be a good idea to link to <a href=\"https:\/\/numbas.mathcentre.ac.uk\/exam\/1973\/numbas-website-demo\/\">the revised Numbas demo exam<\/a>, which contains a question for each built-in part type, showing off various ways of using them.<\/li><li>Themes are now editable through the web interface, just like extensions, and you can grant individual users access to your themes. (<a href=\"https:\/\/github.com\/numbas\/editor\/commit\/5af175f7d48393eff8568e8d940377aeed575f90\">code<\/a>)<\/li><\/ul>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<p>That&#8217;s it for now. See you in October!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>We&#8217;re continually working on Numbas, fixing bugs and adding new features. I thought that it would be a good idea to post more regularly about updates to the Numbas software, rather than waiting until each year&#8217;s major version release to list everything that&#8217;s changed. I&#8217;m going to go into a bit more detail on changes [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[10],"tags":[],"_links":{"self":[{"href":"https:\/\/www.numbas.org.uk\/theme-testing\/wp-json\/wp\/v2\/posts\/1609"}],"collection":[{"href":"https:\/\/www.numbas.org.uk\/theme-testing\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.numbas.org.uk\/theme-testing\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.numbas.org.uk\/theme-testing\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.numbas.org.uk\/theme-testing\/wp-json\/wp\/v2\/comments?post=1609"}],"version-history":[{"count":3,"href":"https:\/\/www.numbas.org.uk\/theme-testing\/wp-json\/wp\/v2\/posts\/1609\/revisions"}],"predecessor-version":[{"id":1622,"href":"https:\/\/www.numbas.org.uk\/theme-testing\/wp-json\/wp\/v2\/posts\/1609\/revisions\/1622"}],"wp:attachment":[{"href":"https:\/\/www.numbas.org.uk\/theme-testing\/wp-json\/wp\/v2\/media?parent=1609"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.numbas.org.uk\/theme-testing\/wp-json\/wp\/v2\/categories?post=1609"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.numbas.org.uk\/theme-testing\/wp-json\/wp\/v2\/tags?post=1609"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}