<?php
namespace structures\html;
class Script extends Element
{
   public function __construct($src=null)
   {
      parent::__construct("script");
      $this->add_attribute("src", $src);
   }
}
<?php
namespace structures\html;

class Head extends Element
{
   public function __construct(
      $title=null, $css_path=null, $description=null, $favicon_path=null,
      $thumbnail_path=null)
   {
      parent::__construct("head");
      $this->title = $title;
      $this->css_path = $css_path;
      $this->description = $description;
      $this->favicon_path = $favicon_path;
      $this->thumbnail_path = $thumbnail_path;
   }
   protected function build_content()
   {
      $markup = $this->build_title();
      $markup .= $this->build_css_link();
      $markup .= $this->build_description();
      $markup .= $this->build_favicon_link();
      $markup .= $this->build_thumbnail_link();
      return $markup;
   }
   protected function build_title()
   {
      $title = $this->title;
      if (!is_null($title))
      {
         return new Title($this->title);
      }
      return null;
   }
   protected function build_css_link()
   {
      $path = $this->css_path;
      if (!is_null($path))
      {
         return new Link("stylesheet", $path);
      }
      return null;
   }
   protected function build_description()
   {
      $description = $this->description;
      if (!is_null($description))
      {
         return new Meta($description, "description");
      }
      return null;
   }
   protected function build_favicon_link()
   {
      $path = $this->favicon_path;
      if (!is_null($path))
      {
         return new Link("shortcut icon", $path);
      }
      return null;
   }
   protected function build_thumbnail_link()
   {
      $path = $this->thumbnail_path;
      if (!is_null($path))
      {
         return new Link("image_src", $path);
      }
      return null;
   }
}
<?php
namespace structures\html;

class Table extends Element
{
   public function __construct($id=null, $class=null, $cellspacing=0)
   {
      parent::__construct("table", $id, $class);
      $this->add_attribute("cellspacing", $cellspacing);
   }
}
<?php
namespace structures\html;

class A extends Element
{
   public function __construct($href=null, $content=null, $id=null, $class=null)
   {
      parent::__construct("a", $id, $class);
      $this->add_attribute("href", $href);
      $this->content = $content;
   }

   protected function build_content()
   {
      $content = $this->content;
      if (is_null($content))
      {
         $content = $this->get_attribute("href");
      }
      return $content;
   }
}
<?php
namespace structures\html;

class HTML extends Element
{
   public function __construct(
      $title=null, $css_path=null, $description=null, $favicon_path=null,
      $thumbnail_path=null)
   {
      parent::__construct("html");
      $this->title = $this->get_default($title, "PAGE_TITLE");
      $this->css_path = $this->get_default($css_path, "CSS_PATH");
      $this->description = $description;
      $this->favicon_path = $favicon_path;
      $this->thumbnail_path = $thumbnail_path;
   }
   protected function build_content()
   {
      $markup = $this->build_head();
      $markup .= new Body($this->build_body());
      return $markup;
   }
   protected function build_head()
   {
      return new Head(
         $this->title, $this->css_path, $this->description,
         $this->favicon_path, $this->thumbnail_path);
   }
   protected function build_body()
   {
      return null;
   }
}
<?php
namespace structures\html;

class Td extends Element
{
   public function __construct(
      $content=null, $id=null, $class=null, $colspan=null, $rowspan=null)
   {
      parent::__construct("td", $id, $class);
      $this->content = $content;
      $this->add_attribute("colspan", $colspan);
      $this->add_attribute("rowspan", $rowspan);
   }
   protected function build_content()
   {
      return $this->content;
   }
}
<?php
namespace structures\html;

class IFrame extends Element
{
   public function __construct($id, $src, $width, $height)
   {
      parent::__construct("iframe", $id);
      $this->add_attribute("src", $src);
      $this->add_attribute("width", $width);
      $this->add_attribute("height", $height);
      $this->add_attribute("frameborder", "0");
   }
}
<?php
namespace structures\html;

class Body extends Element
{
   public function __construct($content)
   {
      parent::__construct("body");
      $this->content = $content;
   }
   protected function build_content()
   {
      return $this->content . $this->break_line();
   }
}
216.73.216.33
216.73.216.33
216.73.216.33
 
September 30, 2015


Edge of Life is a form I made with Babycastles and Mouth Arcade for an event in New York called Internet Yami-ichi, a flea market of internet-ish goods. We set up our table to look like a doctor's office and pharmacy and offered free examinations and medication prescriptions, a system described by one person as "a whole pharmacy and medical industrial complex".

Diagnoses were based on responses to the form and observations by our doctor during a short examination. The examination typically involved bizarre questions, toy torpedoes being thrown at people and a plastic bucket over the patient's head. The form combined ideas from Myers-Briggs Type Indicators, Codex Seraphinianus and chain-mail personality tests that tell you which TV show character you are. In our waiting room, we had Lake of Roaches installed in a stuffed bat (GIRP bat). It was really fun!

The icons for the food pyramid are from Maple Story and the gun icons are from the dingbat font Outgunned. I'm also using Outgunned to generate the items in Food Spring.