diff --git a/lib/linguist/languages.yml b/lib/linguist/languages.yml index e2deec79..461535fe 100644 --- a/lib/linguist/languages.yml +++ b/lib/linguist/languages.yml @@ -787,8 +787,9 @@ HTML: primary_extension: .html extensions: - .htm - - .xhtml - .html.hl + - .st + - .xhtml HTML+Django: type: markup diff --git a/lib/linguist/samples.json b/lib/linguist/samples.json index 9dfd0466..676c2585 100644 --- a/lib/linguist/samples.json +++ b/lib/linguist/samples.json @@ -195,6 +195,10 @@ ".handlebars", ".hbs" ], + "HTML": [ + ".html", + ".st" + ], "Hy": [ ".hy" ], @@ -512,6 +516,9 @@ "Slash": [ ".sl" ], + "Smalltalk": [ + ".st" + ], "SourcePawn": [ ".sp" ], @@ -677,8 +684,8 @@ ".gemrc" ] }, - "tokens_total": 589521, - "languages_total": 711, + "tokens_total": 590357, + "languages_total": 716, "tokens": { "ABAP": { "*/**": 1, @@ -24913,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, + "16": 1, + "Layout": 1, + "System": 1, + "
": 4, + "": 2, + "src=": 2, + "alt=": 2, + "width=": 1, + "height=": 2, + "
": 1, + "Generated": 1, + "with": 1, + "Doxygen": 1 + }, "Hy": { ";": 4, "Fibonacci": 1, @@ -56359,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, @@ -62288,6 +62618,7 @@ "Groovy Server Pages": 91, "Haml": 4, "Handlebars": 69, + "HTML": 413, "Hy": 155, "IDL": 418, "Idris": 148, @@ -62379,6 +62710,7 @@ "ShellSession": 233, "Shen": 3472, "Slash": 187, + "Smalltalk": 423, "SourcePawn": 2080, "SQL": 1485, "Squirrel": 130, @@ -62464,6 +62796,7 @@ "Groovy Server Pages": 4, "Haml": 1, "Handlebars": 2, + "HTML": 2, "Hy": 2, "IDL": 4, "Idris": 1, @@ -62555,6 +62888,7 @@ "ShellSession": 3, "Shen": 3, "Slash": 1, + "Smalltalk": 3, "SourcePawn": 1, "SQL": 5, "Squirrel": 1, @@ -62585,5 +62919,5 @@ "YAML": 2, "Zephir": 2 }, - "md5": "b191c6f4ae2ff732b15aa39c58ba653f" + "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 + + + +
+Main Page · +Class Overview · +Hierarchy · +All Classes +
+ + +
+
+
Related Pages
+
+
+
Here is a list of all related documentation pages:
+
+ + + 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