Source

pygments-main / external / lasso9-keywords.lasso

#!/usr/bin/lasso9
// this unneccessary bracket makes BBEdit 9 colour the file properly[

output("Without this output statement, some methods will be missing.")
local(f) = file("builtins.py")
#f->doWithClose => {

#f->openWrite
#f->writeString('# -*- coding: utf-8 -*-
"""
    pygments.lexers._lassobuiltins
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Built-in Lasso types, traits, and methods.
"""

')

lcapi_loadModules

// Load all of the libraries from builtins and lassoserver
// This forces all possible available types and methods to be registered
local(srcs =
		tie(
			dir(sys_masterHomePath + 'LassoLibraries/builtins/')->eachFilePath,
			dir(sys_masterHomePath + 'LassoLibraries/lassoserver/')->eachFilePath
		)
)

with topLevelDir in #srcs
where !#topLevelDir->lastComponent->beginsWith('.')
do protect => {
  handle_error => {
		stdoutnl('Unable to load: ' + #topLevelDir + ' ' + error_msg)
	}
	library_thread_loader->loadLibrary(#topLevelDir)
	stdoutnl('Loaded: ' + #topLevelDir)
}

local(
	typesList = list(),
	traitsList = list(),
	methodsList = list()
)

// unbound methods
with method in sys_listUnboundMethods
where !#method->methodName->asString->endsWith('=')
where #method->methodName->asString->isalpha(1)
where #methodsList !>> #method->methodName->asString
do #methodsList->insert(#method->methodName->asString)

// traits
with trait in sys_listTraits
where !#trait->asString->beginsWith('$')
where #traitsList !>> #trait->asString
do {
	#traitsList->insert(#trait->asString)
	with tmethod in tie(#trait->getType->provides, #trait->getType->requires)
	where !#tmethod->methodName->asString->endsWith('=')
	where #tmethod->methodName->asString->isalpha(1)
	where #methodsList !>> #tmethod->methodName->asString
	do #methodsList->insert(#tmethod->methodName->asString)
}

// types
with type in sys_listTypes
where #typesList !>> #type->asString
do {
	#typesList->insert(#type->asString)
	with tmethod in #type->getType->listMethods
	where !#tmethod->methodName->asString->endsWith('=')
	where #tmethod->methodName->asString->isalpha(1)
	where #methodsList !>> #tmethod->methodName->asString
	do #methodsList->insert(#tmethod->methodName->asString)
}

#f->writeString("BUILTINS = {
    'Types': [
")
with t in #typesList
//order by #t
do #f->writeString("        '"+#t+"',\n")

#f->writeString("    ],
    'Traits': [
")
with t in #traitsList
//order by #t
do #f->writeString("        '"+#t+"',\n")

#f->writeString("    ],
    'Methods': [
")
with t in #methodsList
//order by #t
do #f->writeString("        '"+#t+"',\n")

#f->writeString("    ],
}
")

}
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.