diff --git a/lib/linguist/languages.yml b/lib/linguist/languages.yml
index 9cc180f1..461535fe 100644
--- a/lib/linguist/languages.yml
+++ b/lib/linguist/languages.yml
@@ -3,7 +3,7 @@
 # All languages have an associated lexer for syntax highlighting. It
 # defaults to name.downcase, which covers most cases.
 #
-# type              - Either data, programming, markup, or nil
+# type              - Either data, programming, markup, prose, or nil
 # lexer             - An explicit lexer String (defaults to name)
 # aliases           - An Array of additional aliases (implicitly
 #                     includes name.downcase)
@@ -787,8 +787,9 @@ HTML:
   primary_extension: .html
   extensions:
   - .htm
-  - .xhtml
   - .html.hl
+  - .st
+  - .xhtml
 
 HTML+Django:
   type: markup
@@ -878,7 +879,7 @@ INI:
   - .prefs
   - .properties
   primary_extension: .ini
-  
+
 Inno Setup:
   primary_extension: .iss
   lexer: Text only
@@ -1017,7 +1018,7 @@ KRL:
   type: programming
   color: "#f5c800"
   primary_extension: .krl
-  
+
 Kit:
   type: markup
   lexer: HTML
@@ -1066,6 +1067,15 @@ LilyPond:
   extensions:
   - .ily
 
+Liquid:
+  type: markup
+  lexer: Text only
+  primary_extension: .liquid
+  extensions:
+  - .html
+  - .json
+  - .xml
+
 Literate Agda:
   type: programming
   group: Agda
diff --git a/lib/linguist/samples.json b/lib/linguist/samples.json
index 874fd829..676c2585 100644
--- a/lib/linguist/samples.json
+++ b/lib/linguist/samples.json
@@ -195,6 +195,10 @@
       ".handlebars",
       ".hbs"
     ],
+    "HTML": [
+      ".html",
+      ".st"
+    ],
     "Hy": [
       ".hy"
     ],
@@ -262,6 +266,12 @@
     "LFE": [
       ".lfe"
     ],
+    "Liquid": [
+      ".html",
+      ".json",
+      ".liquid",
+      ".xml"
+    ],
     "Literate Agda": [
       ".lagda"
     ],
@@ -506,6 +516,9 @@
     "Slash": [
       ".sl"
     ],
+    "Smalltalk": [
+      ".st"
+    ],
     "SourcePawn": [
       ".sp"
     ],
@@ -671,8 +684,8 @@
       ".gemrc"
     ]
   },
-  "tokens_total": 588287,
-  "languages_total": 706,
+  "tokens_total": 590357,
+  "languages_total": 716,
   "tokens": {
     "ABAP": {
       "*/**": 1,
@@ -24907,6 +24920,204 @@
       "": 1,
       "/each": 1
     },
+    "HTML": {
+      "": 2,
+      "HTML": 2,
+      "PUBLIC": 2,
+      "W3C": 2,
+      "DTD": 3,
+      "4": 1,
+      "0": 2,
+      "Frameset": 1,
+      "EN": 2,
+      "http": 3,
+      "www": 2,
+      "w3": 2,
+      "org": 2,
+      "TR": 2,
+      "REC": 1,
+      "html40": 1,
+      "frameset": 1,
+      "dtd": 2,
+      "": 2,
+      "
": 2,
+      "Common_meta": 1,
+      "(": 14,
+      ")": 14,
+      "": 2,
+      "Android": 5,
+      "API": 7,
+      "Differences": 2,
+      "Report": 2,
+      " ": 2,
+      "": 2,
+      "": 10,
+      "class=": 22,
+      "Header": 1,
+      "
": 1,
+      " ": 1,
+      "
": 3,
+      "This": 1,
+      "document": 1,
+      "details": 1,
+      "the": 11,
+      "changes": 2,
+      "in": 4,
+      "framework": 2,
+      "API.": 3,
+      "It": 2,
+      "shows": 1,
+      "additions": 1,
+      "modifications": 1,
+      "and": 5,
+      "removals": 2,
+      "for": 2,
+      "packages": 1,
+      "classes": 1,
+      "methods": 1,
+      "fields.": 1,
+      "Each": 1,
+      "reference": 1,
+      "to": 3,
+      "an": 3,
+      "change": 2,
+      "includes": 1,
+      "a": 4,
+      "brief": 1,
+      "description": 1,
+      "of": 5,
+      "explanation": 1,
+      "suggested": 1,
+      "workaround": 1,
+      "where": 1,
+      "available.": 1,
+      "
": 3,
+      "The": 2,
+      "differences": 2,
+      "described": 1,
+      "this": 2,
+      "report": 1,
+      "are": 3,
+      "based": 1,
+      "comparison": 1,
+      "APIs": 1,
+      "whose": 1,
+      "versions": 1,
+      "specified": 1,
+      "upper": 1,
+      "-": 1,
+      "right": 1,
+      "corner": 1,
+      "page.": 1,
+      "compares": 1,
+      "newer": 1,
+      "older": 2,
+      "version": 1,
+      "noting": 1,
+      "any": 1,
+      "relative": 1,
+      "So": 1,
+      "example": 1,
+      "indicated": 1,
+      "no": 1,
+      "longer": 1,
+      "present": 1,
+      "For": 1,
+      "more": 1,
+      "information": 1,
+      "about": 1,
+      "SDK": 1,
+      "see": 1,
+      "
": 8,
+      "href=": 9,
+      "target=": 3,
+      "product": 1,
+      "site": 1,
+      " ": 8,
+      ".": 1,
+      "if": 4,
+      "no_delta": 1,
+      "
": 1,
+      "Congratulation": 1,
+      " ": 1,
+      "No": 1,
+      "were": 1,
+      "detected": 1,
+      "between": 1,
+      "two": 1,
+      "provided": 1,
+      "APIs.": 1,
+      "endif": 4,
+      "removed_packages": 2,
+      "Table": 3,
+      "name": 3,
+      "rows": 3,
+      "{": 3,
+      "it.from": 1,
+      "ModelElementRow": 1,
+      "}": 3,
+      "
": 3,
+      "added_packages": 2,
+      "it.to": 2,
+      "PackageAddedLink": 1,
+      "SimpleTableRow": 2,
+      "changed_packages": 2,
+      "PackageChangedLink": 1,
+      "
 ": 11,
+      "": 2,
+      "": 2,
+      "html": 1,
+      "XHTML": 1,
+      "1": 1,
+      "Transitional": 1,
+      "xhtml1": 2,
+      "transitional": 1,
+      "xmlns=": 1,
+      " ": 1,
+      "equiv=": 1,
+      "content=": 1,
+      "Related": 2,
+      "Pages": 2,
+      " ": 1,
+      "rel=": 1,
+      "type=": 1,
+      "": 1,
+      "Main": 1,
+      "Page": 1,
+      "&": 3,
+      "middot": 3,
+      ";": 3,
+      "Class": 2,
+      "Overview": 2,
+      "Hierarchy": 1,
+      "All": 1,
+      "Classes": 1,
+      "Here": 1,
+      "is": 1,
+      "list": 1,
+      "all": 1,
+      "related": 1,
+      "documentation": 1,
+      "pages": 1,
+      "": 1,
+      "": 2,
+      "id=": 2,
+      "": 4,
+      " ": 2,
+      "src=": 2,
+      "alt=": 2,
+      "width=": 1,
+      "height=": 2,
+      " ": 4,
+      " ": 2,
+      "16": 1,
+      "Layout": 1,
+      "System": 1,
+      "
": 1,
+      "Generated": 1,
+      "with": 1,
+      "Doxygen": 1
+    },
     "Hy": {
       ";": 4,
       "Fibonacci": 1,
@@ -33947,6 +34158,347 @@
       "info": 1,
       "reproduce": 1
     },
+    "Liquid": {
+      "": 1,
+      "version=": 2,
+      "encoding=": 1,
+      "": 1,
+      "xmlns": 6,
+      "content=": 2,
+      "wfw=": 1,
+      "dc=": 1,
+      "atom=": 1,
+      "sy=": 1,
+      "slash=": 1,
+      "": 1,
+      "": 4,
+      "xml": 2,
+      "lang=": 3,
+      "Jekyll": 6,
+      "Simple": 3,
+      "blog": 3,
+      "-": 17,
+      "aware": 3,
+      "static": 5,
+      "sites": 3,
+      " ": 4,
+      "": 1,
+      "type=": 3,
+      "href=": 19,
+      "rel=": 3,
+      " ": 3,
+      "http": 8,
+      "//jekyllrb.com/": 2,
+      "": 3,
+      "": 2,
+      "{": 119,
+      "site.time": 2,
+      "|": 39,
+      "date_to_rfc822": 3,
+      "}": 119,
+      " ": 2,
+      "": 1,
+      " ": 1,
+      "": 1,
+      "en": 1,
+      "US": 1,
+      " ": 1,
+      "": 1,
+      "v": 1,
+      "jekyll.version": 1,
+      " ": 1,
+      "": 3,
+      "Transform": 3,
+      "your": 7,
+      "plain": 3,
+      "text": 3,
+      "into": 3,
+      "websites": 3,
+      "and": 6,
+      "blogs.": 3,
+      " ": 3,
+      "": 1,
+      "": 1,
+      "//jekyllrb.com/img/logo": 1,
+      "rss.png": 1,
+      " ": 1,
+      "": 1,
+      " ": 1,
+      "": 1,
+      " ": 1,
+      " ": 1,
+      "%": 58,
+      "for": 11,
+      "post": 1,
+      "in": 12,
+      "site.posts": 2,
+      "- ": 1,
+      "post.title": 1,
+      "xml_escape": 4,
+      "//jekyllrb.com": 2,
+      "post.url": 2,
+      "post.date": 1,
+      "
": 1,
+      "post.author": 1,
+      " ": 1,
+      "tag": 6,
+      "post.tags": 1,
+      "": 2,
+      " ": 2,
+      "endfor": 9,
+      "cat": 2,
+      "post.categories": 1,
+      "": 1,
+      "isPermaLink=": 1,
+      " ": 1,
+      "post.content": 1,
+      " ": 1,
+      "  ": 1,
+      " ": 1,
+      "": 4,
+      "class=": 58,
+      "": 41,
+      "
": 12,
+      "&": 10,
+      "nbsp": 4,
+      ";": 10,
+      "
": 12,
+      "
 ": 41,
+      " ": 4,
+      "": 7,
+      " ": 7,
+      "No": 1,
+      "more": 2,
+      "databases": 1,
+      "comment": 1,
+      "moderation": 1,
+      "or": 2,
+      "pesky": 1,
+      "updates": 1,
+      "to": 3,
+      "install": 2,
+      "just": 1,
+      "": 3,
+      "content": 1,
+      " ": 3,
+      ".": 5,
+      "": 18,
+      "How": 1,
+      "works": 1,
+      "rarr": 4,
+      " ": 18,
+      "Static": 2,
+      "Markdown": 1,
+      "(": 2,
+      "Textile": 1,
+      ")": 2,
+      "Liquid": 1,
+      "HTML": 1,
+      "": 15,
+      "amp": 1,
+      " ": 15,
+      "CSS": 1,
+      "go": 1,
+      "in.": 1,
+      "come": 1,
+      "out": 1,
+      "ready": 1,
+      "deployment.": 1,
+      "template": 1,
+      "guide": 1,
+      "Blog": 1,
+      "Permalinks": 1,
+      "categories": 1,
+      "pages": 1,
+      "posts": 1,
+      "custom": 2,
+      "layouts": 1,
+      "are": 3,
+      "all": 1,
+      "first": 1,
+      "class": 1,
+      "citizens": 1,
+      "here.": 1,
+      "Migrate": 1,
+      "": 2,
+      "Get": 1,
+      "up": 1,
+      "running": 1,
+      "seconds": 1,
+      " ": 2,
+      "Quick": 1,
+      "start": 1,
+      "Instructions": 1,
+      "gem": 1,
+      "jekyll": 3,
+      "new": 1,
+      "my": 2,
+      "awesome": 3,
+      "site": 4,
+      "cd": 1,
+      "/my": 1,
+      "serve": 1,
+      "#": 1,
+      "Now": 1,
+      "browse": 1,
+      "//localhost": 1,
+      " ": 5,
+      "src=": 6,
+      "width=": 1,
+      "height=": 1,
+      "alt=": 3,
+      "": 1,
+      "Free": 1,
+      "hosting": 2,
+      " ": 1,
+      "with": 2,
+      "GitHub": 4,
+      "Pages": 3,
+      "Sick": 1,
+      "of": 1,
+      "dealing": 1,
+      "companies": 1,
+      "powered": 1,
+      "by": 2,
+      "so": 1,
+      "you": 1,
+      "can": 1,
+      "easily": 1,
+      "deploy": 1,
+      "using": 1,
+      "free": 1,
+      "mdash": 1,
+      "domain": 1,
+      "name": 1,
+      "all.": 1,
+      "Learn": 1,
+      "about": 1,
+      "": 1,
+      "html": 1,
+      "PUBLIC": 1,
+      "W3C": 1,
+      "DTD": 2,
+      "XHTML": 1,
+      "1": 1,
+      "0": 1,
+      "Transitional": 1,
+      "EN": 1,
+      "www": 1,
+      "w3": 1,
+      "org": 1,
+      "TR": 1,
+      "xhtml1": 2,
+      "transitional": 1,
+      "dtd": 1,
+      "": 1,
+      "xmlns=": 1,
+      "": 1,
+      " ": 1,
+      "equiv=": 1,
+      "shop.name": 2,
+      "page_title": 1,
+      "global_asset_url": 5,
+      "stylesheet_tag": 3,
+      "script_tag": 5,
+      "shopify_asset_url": 1,
+      "asset_url": 2,
+      "content_for_header": 1,
+      "": 1,
+      "": 1,
+      "id=": 28,
+      "Skip": 1,
+      "navigation.": 1,
+      "if": 5,
+      "cart.item_count": 7,
+      "style=": 5,
+      "There": 1,
+      "pluralize": 3,
+      "title=": 3,
+      "cart": 1,
+      "Your": 1,
+      "subtotal": 1,
+      "is": 1,
+      "cart.total_price": 2,
+      "money": 5,
+      "item": 1,
+      "cart.items": 1,
+      "onMouseover=": 2,
+      "onMouseout=": 2,
+      " ": 2,
+      "endif": 5,
+      "": 1,
+      " ": 1,
+      "onclick=": 1,
+      "View": 1,
+      "Mini": 1,
+      "Cart": 1,
+      " ": 3,
+      "content_for_layout": 1,
+      "": 5,
+      "link": 2,
+      "linklists.main": 1,
+      "menu.links": 1,
+      "": 5,
+      "link.title": 2,
+      "link_to": 2,
+      "link.url": 2,
+      " ": 5,
+      " ": 5,
+      "tags": 1,
+      "collection.tags": 1,
+      "link_to_add_tag": 1,
+      "highlight_active_tag": 1,
+      "link_to_tag": 1,
+      "linklists.footer.links": 1,
+      "All": 1,
+      "prices": 1,
+      "shop.currency": 1,
+      "Powered": 1,
+      "Shopify": 1,
+      "": 1,
+      "": 1,
+      "jsonify": 1,
+      "": 1,
+      "We": 1,
+      "have": 1,
+      "wonderful": 1,
+      "products": 1,
+      " ": 1,
+      "image": 1,
+      "product.images": 1,
+      "forloop.first": 1,
+      "else": 1,
+      "product.title": 1,
+      "Vendor": 1,
+      "product.vendor": 1,
+      "link_to_vendor": 1,
+      "Type": 1,
+      "product.type": 1,
+      "link_to_type": 1,
+      "": 1,
+      "product.price_min": 1,
+      "product.price_varies": 1,
+      "product.price_max": 1,
+      " ": 1,
+      "": 1,
+      "product.description": 1,
+      "": 1
+    },
     "Literate Agda": {
       "documentclass": 1,
       "{": 35,
@@ -56012,6 +56564,131 @@
       "ast.eval": 1,
       "Env.new": 1
     },
+    "Smalltalk": {
+      "Object": 1,
+      "subclass": 2,
+      "#Philosophers": 1,
+      "instanceVariableNames": 1,
+      "classVariableNames": 1,
+      "poolDictionaries": 1,
+      "category": 1,
+      "Philosophers": 3,
+      "class": 1,
+      "methodsFor": 2,
+      "new": 4,
+      "self": 25,
+      "shouldNotImplement": 1,
+      "quantity": 2,
+      "super": 1,
+      "initialize": 3,
+      "dine": 4,
+      "seconds": 2,
+      "(": 19,
+      "Delay": 3,
+      "forSeconds": 1,
+      ")": 19,
+      "wait.": 5,
+      "philosophers": 2,
+      "do": 1,
+      "[": 18,
+      "each": 5,
+      "|": 18,
+      "terminate": 1,
+      "]": 18,
+      ".": 16,
+      "size": 4,
+      "leftFork": 6,
+      "n": 11,
+      "forks": 5,
+      "at": 3,
+      "rightFork": 6,
+      "ifTrue": 1,
+      "ifFalse": 1,
+      "+": 1,
+      "eating": 3,
+      "Semaphore": 2,
+      "new.": 2,
+      "-": 1,
+      "timesRepeat": 1,
+      "signal": 1,
+      "randy": 3,
+      "Random": 1,
+      "to": 2,
+      "collect": 2,
+      "forMutualExclusion": 1,
+      "philosopher": 2,
+      "philosopherCode": 3,
+      "status": 8,
+      "n.": 2,
+      "printString": 1,
+      "true": 2,
+      "whileTrue": 1,
+      "Transcript": 5,
+      "nextPutAll": 5,
+      ";": 8,
+      "nl.": 5,
+      "forMilliseconds": 2,
+      "next": 2,
+      "*": 2,
+      "critical": 1,
+      "signal.": 2,
+      "newProcess": 1,
+      "priority": 1,
+      "Processor": 1,
+      "userBackgroundPriority": 1,
+      "name": 1,
+      "resume": 1,
+      "yourself": 1,
+      "Koan": 1,
+      "TestBasic": 1,
+      "": 1,
+      "A": 1,
+      "collection": 1,
+      "of": 1,
+      "introductory": 1,
+      "tests": 2,
+      "testDeclarationAndAssignment": 1,
+      "declaration": 2,
+      "anotherDeclaration": 2,
+      "_": 1,
+      "expect": 10,
+      "fillMeIn": 10,
+      "toEqual": 10,
+      "declaration.": 1,
+      "anotherDeclaration.": 1,
+      "testEqualSignIsNotAnAssignmentOperator": 1,
+      "variableA": 6,
+      "variableB": 5,
+      "value": 2,
+      "variableB.": 2,
+      "testMultipleStatementsInASingleLine": 1,
+      "variableC": 2,
+      "variableA.": 1,
+      "variableC.": 1,
+      "testInequality": 1,
+      "testLogicalOr": 1,
+      "expression": 4,
+      "<": 2,
+      "expression.": 2,
+      "testLogicalAnd": 1,
+      "&": 1,
+      "testNot": 1,
+      "not.": 1,
+      "testSimpleChainMatches": 1,
+      "e": 11,
+      "eCtrl": 3,
+      "eventKey": 3,
+      "e.": 1,
+      "ctrl": 5,
+      "true.": 1,
+      "assert": 2,
+      "matches": 4,
+      "{": 4,
+      "}": 4,
+      "eCtrl.": 2,
+      "deny": 2,
+      "a": 1
+    },
     "SourcePawn": {
       "//#define": 1,
       "DEBUG": 2,
@@ -61941,6 +62618,7 @@
     "Groovy Server Pages": 91,
     "Haml": 4,
     "Handlebars": 69,
+    "HTML": 413,
     "Hy": 155,
     "IDL": 418,
     "Idris": 148,
@@ -61962,6 +62640,7 @@
     "Latte": 759,
     "Less": 39,
     "LFE": 1711,
+    "Liquid": 1234,
     "Literate Agda": 478,
     "Literate CoffeeScript": 275,
     "LiveScript": 123,
@@ -62031,6 +62710,7 @@
     "ShellSession": 233,
     "Shen": 3472,
     "Slash": 187,
+    "Smalltalk": 423,
     "SourcePawn": 2080,
     "SQL": 1485,
     "Squirrel": 130,
@@ -62116,6 +62796,7 @@
     "Groovy Server Pages": 4,
     "Haml": 1,
     "Handlebars": 2,
+    "HTML": 2,
     "Hy": 2,
     "IDL": 4,
     "Idris": 1,
@@ -62137,6 +62818,7 @@
     "Latte": 2,
     "Less": 1,
     "LFE": 4,
+    "Liquid": 5,
     "Literate Agda": 1,
     "Literate CoffeeScript": 1,
     "LiveScript": 1,
@@ -62206,6 +62888,7 @@
     "ShellSession": 3,
     "Shen": 3,
     "Slash": 1,
+    "Smalltalk": 3,
     "SourcePawn": 1,
     "SQL": 5,
     "Squirrel": 1,
@@ -62236,5 +62919,5 @@
     "YAML": 2,
     "Zephir": 2
   },
-  "md5": "9cc12f291dc1b2d049fb7696ac69c345"
+  "md5": "127e4abbd61c3dfa815c46752237e812"
 }
\ No newline at end of file
diff --git a/samples/HTML/ApiOverviewPage.st b/samples/HTML/ApiOverviewPage.st
new file mode 100644
index 00000000..4faa1935
--- /dev/null
+++ b/samples/HTML/ApiOverviewPage.st
@@ -0,0 +1,60 @@
+
+
+
+$Common_meta()$
+
+Android API Differences Report
+ 
+
+
+
+$Header()$
+
+
+
+
Android API Differences Report 
+
This document details the changes in the Android framework API. It shows 
+additions, modifications, and removals for packages, classes, methods, and 
+fields. Each reference to an API change includes a brief description of the 
+API and an explanation of the change and suggested workaround, where available.
+
+
The differences described in this report are based a comparison of the APIs 
+whose versions are specified in the upper-right corner of this page. It compares a 
+newer "to" API to an older "from" version, noting any changes relative to the 
+older API. So, for example, indicated API removals are no longer present in the "to" 
+API.
+
For more information about the Android framework API and SDK, 
+see the Android product site .
+
+$if(no_delta)$
+
Congratulation! 
+No differences were detected between the two provided APIs.
+$endif$
+
+
+$if(removed_packages)$
+$Table(name="Removed Packages", rows=removed_packages:{$it.from:ModelElementRow()$})$
+
+$endif$
+
+
+$if(added_packages)$
+$Table(name="Added Packages", rows=added_packages:{$it.to:PackageAddedLink()$}:SimpleTableRow())$
+
+$endif$
+
+$if(changed_packages)$
+$Table(name="Changed Packages", rows=changed_packages:{$it.to:PackageChangedLink()$}:SimpleTableRow())$
+
+$endif$
+
+
+
+
 
+
+
+
+
+
+
+
diff --git a/samples/HTML/pages.html b/samples/HTML/pages.html
new file mode 100644
index 00000000..e068e4fa
--- /dev/null
+++ b/samples/HTML/pages.html
@@ -0,0 +1,31 @@
+
+
+
+ 
+Related Pages 
+ 
+
+
+
+
+
+
+
+
Here is a list of all related documentation pages:
+
 
+Generated with Doxygen  1.8.1.2
+
+
diff --git a/samples/Liquid/feed.xml b/samples/Liquid/feed.xml
new file mode 100644
index 00000000..edaae4a0
--- /dev/null
+++ b/samples/Liquid/feed.xml
@@ -0,0 +1,44 @@
+
+
+  
+    Jekyll • Simple, blog-aware, static sites 
+     
+     http://jekyllrb.com/
+    {{ site.time | date_to_rfc822 }} 
+    {{ site.time | date_to_rfc822 }} 
+    en-US 
+    Jekyll v{{ jekyll.version }} 
+    Transform your plain text into static websites and blogs. 
+    
+      Transform your plain text into static websites and blogs. 
+      http://jekyllrb.com/img/logo-rss.png 
+      Jekyll • Simple, blog-aware, static sites 
+       http://jekyllrb.com/
+      144 
+      73 
+     
+    {% for post in site.posts %}
+    - 
+      
{{ post.title | xml_escape}} 
+       http://jekyllrb.com{{ post.url }}
+      {{ post.date | date_to_rfc822 }} 
+      {{ post.author }} 
+      {% for tag in post.tags %}
+      {{ tag | xml_escape }} 
+      {% endfor %}
+      {% for cat in post.categories %}
+      {{ cat | xml_escape }} 
+      {% endfor %}
+      http://jekyllrb.com{{ post.url }} 
+      {{ post.content | xml_escape }} 
+     
+    {% endfor %}
+   
+ 
\ No newline at end of file
diff --git a/samples/Liquid/jekyll.html b/samples/Liquid/jekyll.html
new file mode 100644
index 00000000..fba31c3d
--- /dev/null
+++ b/samples/Liquid/jekyll.html
@@ -0,0 +1,84 @@
+
+  
+    
+      
Transform your plain text into static websites and blogs.
+    
+  
 
+ 
+
+  
+    
+      
Simple 
+      
+        No more databases, comment moderation, or pesky updates to install—just your content .
+      
+      
How Jekyll works → 
+    
+    
+    
+      
Blog-aware 
+      
+        Permalinks, categories, pages, posts, and custom layouts are all first-class citizens here.
+      
+      
Migrate your blog → 
+    
+    
+  
 
+ 
+
+  
+    
+      
Get up and running in seconds . 
+    
+    
+      
Quick-start Instructions
+      
+        
+          ~ 
+          $ 
+          gem install jekyll 
+        
+        
+          ~ 
+          $ 
+          jekyll new my-awesome-site 
+        
+        
+          ~ 
+          $ 
+          cd my-awesome-site 
+        
+        
+          ~/my-awesome-site 
+          $ 
+          jekyll serve 
+        
+        
+          # => Now browse to http://localhost:4000 
+        
+      
+    
+    
+  
 
+ 
+
\ No newline at end of file
diff --git a/samples/Liquid/layout.liquid b/samples/Liquid/layout.liquid
new file mode 100644
index 00000000..7954c7ec
--- /dev/null
+++ b/samples/Liquid/layout.liquid
@@ -0,0 +1,104 @@
+
+
+
+
+   
+  {{shop.name}} - {{page_title}} 
+
+  {{ 'textile.css'  | global_asset_url | stylesheet_tag }}
+  {{ 'lightbox/v204/lightbox.css' | global_asset_url | stylesheet_tag }}
+
+  {{ 'prototype/1.6/prototype.js' | global_asset_url  | script_tag }}
+  {{ 'scriptaculous/1.8.2/scriptaculous.js' | global_asset_url  | script_tag }}
+  {{ 'lightbox/v204/lightbox.js'  | global_asset_url  | script_tag }}
+  {{ 'option_selection.js'        | shopify_asset_url | script_tag }}
+
+  {{ 'layout.css'   | asset_url | stylesheet_tag }}
+  {{ 'shop.js'      | asset_url | script_tag }}
+
+  {{ content_for_header }}
+
+
+
+
+  Skip to navigation. 
+    
+        {% if cart.item_count > 0 %}
+      
+      
+      
There {{ cart.item_count | pluralize: 'is', 'are' }} {{ cart.item_count }} {{ cart.item_count | pluralize: 'item', 'items' }} in your cart ! Your subtotal is {{ cart.total_price | money }}. 
+        {% for item in cart.items %}
+        
+        {% endfor %}
+        
+       
+      
 
+        {% endif %}
+
+  
+    
+  
+
+
+    
+    
+      {{ content_for_layout }}
+      
+    
+
+  
+    
+
+      
+        {% for link in linklists.main-menu.links %}
+           {{ link.title | link_to: link.url }} 
+        {% endfor %}
+       
+
+        {% if tags %}
+        
+          {% for tag in collection.tags %}
+            {{ '+' | link_to_add_tag: tag }} {{ tag | highlight_active_tag | link_to_tag: tag }} 
+          {% endfor %}
+         
+        {% endif %}
+
+      
+        {% for link in linklists.footer.links %}
+           {{ link.title | link_to: link.url }} 
+        {% endfor %}
+       
+
+    
+
+  
+
+    
+
+  
+
 
+
+
+ 
+
+
+
diff --git a/samples/Liquid/posts.json b/samples/Liquid/posts.json
new file mode 100644
index 00000000..9633fd93
--- /dev/null
+++ b/samples/Liquid/posts.json
@@ -0,0 +1 @@
+{{ site.posts | jsonify }}
diff --git a/samples/Liquid/template.liquid b/samples/Liquid/template.liquid
new file mode 100644
index 00000000..5502c2e7
--- /dev/null
+++ b/samples/Liquid/template.liquid
@@ -0,0 +1,70 @@
+We have wonderful products! 
+
diff --git a/samples/Smalltalk/Dinner.st b/samples/Smalltalk/Dinner.st
new file mode 100644
index 00000000..9304cbc0
--- /dev/null
+++ b/samples/Smalltalk/Dinner.st
@@ -0,0 +1,111 @@
+"======================================================================
+|
+|   Smalltalk dining philosophers
+|
+|
+ ======================================================================"
+
+
+"======================================================================
+|
+| Copyright 1999, 2000 Free Software Foundation, Inc.
+| Written by Paolo Bonzini.
+|
+| This file is part of GNU Smalltalk.
+|
+| GNU Smalltalk is free software; you can redistribute it and/or modify it
+| under the terms of the GNU General Public License as published by the Free
+| Software Foundation; either version 2, or (at your option) any later version.
+| 
+| GNU Smalltalk is distributed in the hope that it will be useful, but WITHOUT
+| ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+| FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+| details.
+| 
+| You should have received a copy of the GNU General Public License along with
+| GNU Smalltalk; see the file COPYING.  If not, write to the Free Software
+| Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  
+|
+ ======================================================================"
+
+
+Object subclass: #Philosophers
+    instanceVariableNames: 'forks philosophers randy eating'
+    classVariableNames: ''
+    poolDictionaries: ''
+    category: 'Examples-Processes'!
+
+!Philosophers class methodsFor: 'dining'!
+
+new
+    self shouldNotImplement
+!
+
+new: quantity
+    ^super new initialize: quantity
+! !
+
+!Philosophers methodsFor: 'dining'!
+
+dine
+    self dine: 15
+!
+
+dine: seconds
+    (Delay forSeconds: seconds) wait.
+    philosophers do: [ :each | each terminate ].
+    self initialize: self size
+!
+
+leftFork: n
+    ^forks at: n
+!
+
+rightFork: n
+    ^n = self size
+	ifTrue: [ forks at: 1 ]
+	ifFalse: [ forks at: n + 1 ]
+!
+
+initialize: n
+    eating := Semaphore new.
+    n - 1 timesRepeat: [ eating signal ].
+
+    randy := Random new.
+    forks := (1 to: n) collect: [ :each | Semaphore forMutualExclusion ].
+    philosophers := (1 to: n) collect: [ :each | self philosopher: each ].
+!
+
+philosopher: n
+    | philosopherCode leftFork rightFork status |
+    leftFork  := self leftFork: n.
+    rightFork := self rightFork: n.
+    status    := 'Philosopher #', n printString, ' '.
+    philosopherCode := [[ true ] whileTrue: [
+	Transcript nextPutAll: status, 'thinks'; nl.
+	(Delay forMilliseconds: randy next * 2000) wait.
+	Transcript nextPutAll: status, 'wants to eat'; nl.
+	eating critical: [				    "Avoid deadlock"
+	    Transcript nextPutAll: status, 'waits for left fork'; nl.
+	    leftFork wait.
+	    Transcript nextPutAll: status, 'waits for right fork'; nl.
+	    rightFork wait.
+	    Transcript nextPutAll: status, 'eats'; nl.
+	    (Delay forMilliseconds: randy next * 2000) wait.
+	    leftFork signal.
+	    rightFork signal.
+	].
+    ]].
+
+    ^(philosopherCode newProcess)
+	priority: Processor userBackgroundPriority;
+	name: status;
+	resume;
+	yourself
+!
+
+size
+    ^forks size
+! !
+
+(Philosophers new: 5) dine!
diff --git a/samples/Smalltalk/TestBasic.st b/samples/Smalltalk/TestBasic.st
new file mode 100644
index 00000000..ef6244cd
--- /dev/null
+++ b/samples/Smalltalk/TestBasic.st
@@ -0,0 +1,64 @@
+Koan subclass: TestBasic [
+  
+
+  testDeclarationAndAssignment [
+    | declaration anotherDeclaration |
+    "You must declare variables before using them."
+    "Variables are separated by a single space."
+
+    declaration _ 1.  "Squeak Smalltalk way to assign value"
+    anotherDeclaration := 'string'.  "typical way to assign value
+      (this will be used throughout the koans)"
+
+    self expect: fillMeIn toEqual: declaration.
+    self expect: fillMeIn toEqual: anotherDeclaration.
+  ]
+
+  testEqualSignIsNotAnAssignmentOperator [
+    | variableA variableB value |
+
+    variableA := variableB := 1234.  "multiple assignments work"
+    value := variableA = variableB.  "equal is not used for assignment"
+
+    self expect: fillMeIn toEqual: (variableA = variableB).
+
+    "#== is a message that checks if identity is equal.  More about messages in the TestMessage koan."
+  ]
+
+  testMultipleStatementsInASingleLine [
+    | variableA variableB variableC |
+
+    "Multiple statements are separated by periods."
+    variableA := 1. variableB := 2. variableC := 3.
+
+    self expect: fillMeIn toEqual: variableA.
+    self expect: fillMeIn toEqual: variableB.
+    self expect: fillMeIn toEqual: variableC.
+  ]
+
+  testInequality [
+    self expect: fillMeIn toEqual: ('hello' ~= 'world').
+
+    "#~~ is a message that checks if identity is not equal.  More about messages in the TestMessage koan."
+  ]
+
+  testLogicalOr [
+    | expression |
+
+    expression := (3 > 4) | (5 < 6).
+
+    self expect: fillMeIn toEqual: expression.
+  ]
+
+  testLogicalAnd [
+    | expression |
+
+    expression := (2 > 1) & ('a' < 'b').
+
+    self expect: fillMeIn toEqual: expression.
+  ]
+
+  testNot [
+    self expect: fillMeIn toEqual: true not.
+  ]
+]
diff --git a/samples/Smalltalk/testSimpleChainMatches.st b/samples/Smalltalk/testSimpleChainMatches.st
new file mode 100644
index 00000000..85ee574b
--- /dev/null
+++ b/samples/Smalltalk/testSimpleChainMatches.st
@@ -0,0 +1,11 @@
+tests
+testSimpleChainMatches
+	|e eCtrl |
+	e := self eventKey: $e.
+	eCtrl := self eventKey: $e ctrl: true.
+	
+	self assert: (($e ctrl, $e) matches: {eCtrl}).
+	self assert: ($e ctrl matches: {eCtrl. e}).
+	
+	self deny: (($e ctrl, $e) matches: {eCtrl. self eventKey: $a}).
+	self deny: ($e ctrl matches: {e}).
\ No newline at end of file