###############################################################################
# Name: batch.py #
# Purpose: Define DOS Batch syntax for highlighting and other features #
# Author: Cody Precord <cprecord@editra.org> #
# Copyright: (c) 2008 Cody Precord <staff@editra.org> #
# License: wxWindows License #
###############################################################################
"""
FILE: batch.py
AUTHOR: Cody Precord
@summary: Lexer configuration file for dos/windows batch scripts.
@todo: incorportate winbat keywords
"""
__author__ = "Cody Precord <cprecord@editra.org>"
__svnid__ = "$Id: _batch.py 63834 2010-04-03 06:04:33Z CJP $"
__revision__ = "$Revision: 63834 $"
#-----------------------------------------------------------------------------#
# Imports
import wx.stc as stc
# Local Imports
import synglob
import syndata
#-----------------------------------------------------------------------------#
DOSBAT_KEYWORDS = (0, "append arp assoc at atmadm attrib bootcfg break cacls "
"call cd chcp chdir chkdsk chkntfs cls cmd color command "
"comp compact control convert copy date debug defrag del "
"delete dir diskcomp diskcopy doskey echo edit edlin "
"else endlocal EQU erase errorlevel exists exit expand "
"fc find findstr for format ftp ftype GEQ goto graftabl "
"GTR help if ipconfig keyb label LEQ loadfix logoff LSS "
"md mkdir mode more move nbtstat NEQ net netsh netstat "
"nlsfunc not nslookup path pathping pause ping popd "
"print prompt pushd rd rem ren rename replace restore "
"rmdir route runas set setlocal setver share shift "
"shutdown sort start subst time title telnet tracetr "
"tree type ver verify vol xcopy ")
# WinBatch Keywords
WINBAT_KEYWORDS = (0, "if then else endif break end return exit next while for "
"gosub goto switch select to case endselect endwhile "
"endswitch aboveicons acc_attrib acc_chng_nt acc_control "
"acc_create acc_delete acc_full_95 acc_full_nt acc_list "
"acc_pfull_nt acc_pmang_nt acc_print_nt acc_read "
"acc_read_95 acc_read_nt acc_write amc arrange ascending "
"attr_a attr_a attr_ci attr_ci attr_dc attr_dc attr_di "
"attr_di attr_dm attr_dm attr_h attr_h attr_ic attr_ic "
"attr_p attr_p attr_ri attr_ri attr_ro attr_ro attr_sh "
"attr_sh attr_sy attr_sy attr_t attr_t attr_x attr_x "
"avogadro backscan boltzmann cancel capslock check "
"columnscommonformat cr crlf ctrl default default "
"deg2rad descending disable drive electric enable eulers "
"false faraday float8 fwdscan gftsec globalgroup gmtsec "
"goldenratio gravitation hidden icon lbutton lclick "
"ldblclick lf lightmps lightmtps localgroup magfield "
"major mbokcancel mbutton mbyesno mclick mdblclick minor "
"msformat multiple ncsaformat no none none noresize "
"normal notify nowait numlock off on open parsec "
"parseonly pi planckergs planckjoules printer rad2deg "
"rbutton rclick rdblclick regclasses regcurrent "
"regmachine regroot regusers rows save scrolllock server "
"shift single sorted stack string tab tile true uncheck "
"unsorted wait wholesection word1 word2 word4 yes zoomed "
"about abs acos addextender appexist appwaitclose asin "
"askfilename askfiletext askitemlist askline askpassword "
"askyesno atan average beep binaryalloc binarycopy "
"binaryeodget binaryeodset binaryfree binaryhashrec "
"binaryincr binaryincr2 binaryincr4 binaryincrflt "
"binaryindex binaryindexnc binaryoletype binarypeek "
"binarypeek2 binarypeek4 binarypeekflt binarypeekstr "
"binarypoke binarypoke2 binarypoke4 binarypokeflt "
"binarypokestr binaryread binarysort binarystrcnt "
"binarywrite boxbuttondraw boxbuttonkill boxbuttonstat "
"boxbuttonwait boxcaption boxcolor boxdataclear "
"boxdatatag boxdestroy boxdrawcircle boxdrawline "
"boxdrawrect boxdrawtext boxesup boxmapmode boxnew "
"boxopen boxpen boxshut boxtext boxtextcolor boxtextfont "
"boxtitle boxupdates break buttonnames by call callext "
"ceiling char2num clipappend clipget clipput continue "
"cos cosh datetime ddeexecute ddeinitiate ddepoke "
"dderequest ddeterminate ddetimeout debug debugdata "
"decimals delay dialog dialogbox dirattrget dirattrset "
"dirchange direxist")
#---- Language Styling Specs ----#
SYNTAX_ITEMS = [ (stc.STC_BAT_DEFAULT, "default_style"),
(stc.STC_BAT_COMMAND, "class_style"),
(stc.STC_BAT_COMMENT, "comment_style"),
(stc.STC_BAT_HIDE, "string_style"),
(stc.STC_BAT_IDENTIFIER, "scalar_style"),
(stc.STC_BAT_LABEL, "class_style"),
(stc.STC_BAT_OPERATOR, "operator_style"),
(stc.STC_BAT_WORD, "keyword_style") ]
#---- Extra Properties ----#
FOLD = ("fold", "1")
#-----------------------------------------------------------------------------#
class SyntaxData(syndata.SyntaxDataBase):
"""SyntaxData object for Batch files"""
def __init__(self, langid):
syndata.SyntaxDataBase.__init__(self, langid)
# Setup
self.SetLexer(stc.STC_LEX_BATCH)
def GetKeywords(self):
"""Returns Specified Keywords List """
return [DOSBAT_KEYWORDS]
def GetSyntaxSpec(self):
"""Syntax Specifications"""
return SYNTAX_ITEMS
def GetProperties(self):
"""Returns a list of Extra Properties to set"""
return [FOLD]
def GetCommentPattern(self):
"""Returns a list of characters used to comment a block of code """
return [u'::']
|