mirror of
https://github.com/KevinMidboe/linguist.git
synced 2025-10-29 17:50:22 +00:00
add detection for Gosu
This commit is contained in:
@@ -346,6 +346,16 @@ Go:
|
|||||||
type: programming
|
type: programming
|
||||||
extensions:
|
extensions:
|
||||||
- .go
|
- .go
|
||||||
|
|
||||||
|
Gosu:
|
||||||
|
type: programming
|
||||||
|
primary_extension: .gs
|
||||||
|
extensions:
|
||||||
|
- .gs
|
||||||
|
- .gsx
|
||||||
|
- .gsp
|
||||||
|
- .gst
|
||||||
|
- .vark
|
||||||
|
|
||||||
Groff:
|
Groff:
|
||||||
primary_extension: .man
|
primary_extension: .man
|
||||||
|
|||||||
7
test/fixtures/Hello.gst
vendored
Normal file
7
test/fixtures/Hello.gst
vendored
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
<%!-- defined in Hello.gst --%>
|
||||||
|
|
||||||
|
<%@ params( users : Collection <User> ) %>
|
||||||
|
|
||||||
|
<% for( user in users ) { %>
|
||||||
|
|
||||||
|
${user.LastName}, ${user.FirstName}, ${user.Department} <% } %>
|
||||||
9
test/fixtures/Hello.gsx
vendored
Normal file
9
test/fixtures/Hello.gsx
vendored
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
package example
|
||||||
|
|
||||||
|
enhancement Hello : String {
|
||||||
|
|
||||||
|
function toPerson() : Person {
|
||||||
|
var vals = this.split(",")
|
||||||
|
return new Person( vals[0], vals[1] as int, Relationship.valueOf( vals[2] ) ) )
|
||||||
|
}
|
||||||
|
}
|
||||||
106
test/fixtures/Person.gs
vendored
Normal file
106
test/fixtures/Person.gs
vendored
Normal file
@@ -0,0 +1,106 @@
|
|||||||
|
package example
|
||||||
|
|
||||||
|
uses java.util.*
|
||||||
|
|
||||||
|
uses java.io.File
|
||||||
|
|
||||||
|
class Person extends Contact implements IEmailable {
|
||||||
|
|
||||||
|
var _name : String
|
||||||
|
var _age : Integer as Age
|
||||||
|
var _relationship : Relationship as readonly RelationshipOfPerson
|
||||||
|
|
||||||
|
delegate _emailHelper represents IEmailable
|
||||||
|
|
||||||
|
enum Relationship {
|
||||||
|
FRIEND,
|
||||||
|
FAMILY,
|
||||||
|
BUSINESS_CONTACT
|
||||||
|
}
|
||||||
|
|
||||||
|
// Map of names to people
|
||||||
|
static var ALL_PEOPLE = new HashMap<String, Person>()
|
||||||
|
|
||||||
|
/* Constructs a new Person */
|
||||||
|
construct( name : String, age : Integer, relationship : Relationship ) {
|
||||||
|
_name = name
|
||||||
|
_age = age
|
||||||
|
_relationship = relationship
|
||||||
|
_emailHelper = new EmailHelper( this )
|
||||||
|
}
|
||||||
|
|
||||||
|
property get Name():String{
|
||||||
|
return _name
|
||||||
|
}
|
||||||
|
|
||||||
|
property set Name(name : String){
|
||||||
|
_name = name
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Implement IEmailable#getEmailName() */
|
||||||
|
override function getEmailName():String{
|
||||||
|
return Name
|
||||||
|
}
|
||||||
|
|
||||||
|
function incrementAge() {
|
||||||
|
_age++
|
||||||
|
}
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
|
function printPersonInfo() {
|
||||||
|
print( "Person { Name : ${Name}, Age : ${Age}, Relationship : ${RelationshipOfPerson} }" )
|
||||||
|
}
|
||||||
|
|
||||||
|
static function addPerson(p : Person){
|
||||||
|
if(ALL_PEOPLE.containsKey(p?.Name)) {
|
||||||
|
throw new IllegalArgumentException( "There is already someone named '${p.Name}'." )
|
||||||
|
}
|
||||||
|
ALL_PEOPLE[p.Name] = p
|
||||||
|
}
|
||||||
|
|
||||||
|
static function addAllPeople( contacts : List<Contact> ) {
|
||||||
|
for( contact in contacts ) {
|
||||||
|
if( contact typeis Person and not ALL_PEOPLE.containsKey( contact.Name )) {
|
||||||
|
addPerson( contact )
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static function getAllPeopleOlderThanNOrderedByName( age : int ) {
|
||||||
|
var allPeople = ALL_PEOPLE.Values
|
||||||
|
|
||||||
|
return allPeople.where( \ p -> p.Age > age ).orderBy( \ p -> p.Name )
|
||||||
|
}
|
||||||
|
|
||||||
|
static function loadPersonFromDB( id : Integer ) {
|
||||||
|
using( var conn = DBConnectionManager.getConnection(),
|
||||||
|
var stmt = conn.prepareStatement( "SELECT name, age, relationship FROM PEOPLE WHERE ID=?") ){
|
||||||
|
|
||||||
|
stmt.setInt( 0, 0 )
|
||||||
|
var result = stmt.executeQuery()
|
||||||
|
if( result.next() ) {
|
||||||
|
addPerson( new Person( result.getString( "name" ),
|
||||||
|
result.getInt( "age" ),
|
||||||
|
Relationship.valueOf( result.getString( "relationship" ) ) ) )
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Loads in people from a CSV */
|
||||||
|
static function loadFromFile( file : File ) {
|
||||||
|
file.eachLine( \ line -> {
|
||||||
|
if( line.HasContent ) {
|
||||||
|
addPerson( line.toPerson() )
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Save people to a CSV */
|
||||||
|
static function saveToFile( file : File ) {
|
||||||
|
using( var writer = new FileWriter( file ) ) {
|
||||||
|
print( PersonCSVTemplate.renderToString( ALL_PEOPLE.Values ) )
|
||||||
|
PersonCSVTemplate.render( writer, ALL_PEOPLE.Values )
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
1
test/fixtures/hello.gsp
vendored
Normal file
1
test/fixtures/hello.gsp
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
print("hello")
|
||||||
3
test/fixtures/hello.vark
vendored
Normal file
3
test/fixtures/hello.vark
vendored
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
function hello() {
|
||||||
|
print("hello")
|
||||||
|
}
|
||||||
@@ -324,6 +324,13 @@ class TestBlob < Test::Unit::TestCase
|
|||||||
# https://github.com/parrot/parrot
|
# https://github.com/parrot/parrot
|
||||||
assert_equal Language['Parrot Internal Representation'], blob("hello.pir").language
|
assert_equal Language['Parrot Internal Representation'], blob("hello.pir").language
|
||||||
assert_equal Language['Parrot Assembly'], blob("hello.pasm").language
|
assert_equal Language['Parrot Assembly'], blob("hello.pasm").language
|
||||||
|
|
||||||
|
# http://gosu-lang.org
|
||||||
|
assert_equal Language['Gosu'], blob("Hello.gs").language
|
||||||
|
assert_equal Language['Gosu'], blob("Hello.gsx").language
|
||||||
|
assert_equal Language['Gosu'], blob("hello.gsp").language
|
||||||
|
assert_equal Language['Gosu'], blob("Hello.gst").language
|
||||||
|
assert_equal Language['Gosu'], blob("hello.vark").language
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_lexer
|
def test_lexer
|
||||||
|
|||||||
Reference in New Issue
Block a user