class Rouge::Lexers::IgorPro

def self.hdf5Operation

def self.hdf5Operation
  @hdf5Operation ||= Set.new %w(
    hdf5createfile hdf5openfile hdf5closefile hdf5creategroup hdf5opengroup
    hdf5listgroup hdf5closegroup hdf5listattributes hdf5attributeinfo hdf5datasetinfo
    hdf5loaddata hdf5loadimage hdf5loadgroup hdf5savedata hdf5saveimage hdf5savegroup
    hdf5typeinfo hdf5createlink hdf5unlinkobject hdf5libraryinfo
    hdf5dumpstate hdf5dump hdf5dumperrors
  )
end

def self.igorConstants

def self.igorConstants
  @igorConstants ||= Set.new %w(
    nan inf
  )
end

def self.igorDeclarations

def self.igorDeclarations
  @igorDeclarations ||= Set.new %w(
    variable string wave strconstant constant
    nvar svar dfref funcref struct
    char uchar int16 uint16 int32 uint32 int64 uint64 float double
  )
end

def self.igorFunction

def self.igorFunction
  @igorFunction ||= Set.new %w(
    axontelegraphsettimeoutms axontelegraphgettimeoutms
    axontelegraphgetdatanum axontelegraphagetdatanum
    axontelegraphgetdatastring axontelegraphagetdatastring
    axontelegraphgetdatastruct axontelegraphagetdatastruct hdf5datasetinfo
    hdf5attributeinfo hdf5typeinfo hdf5libraryinfo
    mpfxgausspeak mpfxlorenzianpeak mpfxvoigtpeak mpfxemgpeak mpfxexpconvexppeak
    abs acos acosh airya airyad airyb airybd
    alog area areaxy asin asinh atan atan2 atanh axisvalfrompixel besseli
    besselj besselk bessely beta betai binarysearch binarysearchinterp
    binomial binomialln binomialnoise cabs capturehistorystart ceil cequal
    char2num chebyshev chebyshevu checkname cmplx cmpstr conj contourz cos
    cosh cosintegral cot coth countobjects countobjectsdfr cpowi
    creationdate csc csch datafolderexists datafolderrefsequal
    datafolderrefstatus date2secs datetime datetojulian dawson defined
    deltax digamma dilogarithm dimdelta dimoffset dimsize ei enoise
    equalwaves erf erfc erfcw exists exp expint expintegrale1 expnoise
    factorial fakedata faverage faveragexy finddimlabel findlistitem floor
    fontsizeheight fontsizestringwidth fresnelcos fresnelsin gamma
    gammaeuler gammainc gammanoise gammln gammp gammq gauss gauss1d gauss2d
    gcd getbrowserline getdefaultfontsize getdefaultfontstyle getkeystate
    getrterror getrtlocation gizmoinfo gizmoscale gnoise grepstring hcsr
    hermite hermitegauss hyperg0f1 hyperg1f1 hyperg2f1 hypergnoise hypergpfq
    igorversion imag indextoscale integrate1d interp interp2d interp3d
    inverseerf inverseerfc itemsinlist jacobicn jacobisn laguerre laguerrea
    laguerregauss lambertw leftx legendrea limit ln log lognormalnoise
    lorentziannoise magsqr mandelbrotpoint marcumq matrixcondition matrixdet
    matrixdot matrixrank matrixtrace max mean median min mod moddate
    norm numberbykey numpnts numtype numvarordefault nvar_exists p2rect
    panelresolution paramisdefault pcsr pi pixelfromaxisval pnt2x
    poissonnoise poly poly2d polygonarea qcsr r2polar real rightx round
    sawtooth scaletoindex screenresolution sec sech selectnumber
    setenvironmentvariable sign sin sinc sinh sinintegral sphericalbessj
    sphericalbessjd sphericalbessy sphericalbessyd sphericalharmonics sqrt
    startmstimer statsbetacdf statsbetapdf statsbinomialcdf statsbinomialpdf
    statscauchycdf statscauchypdf statschicdf statschipdf statscmssdcdf
    statscorrelation statsdexpcdf statsdexppdf statserlangcdf statserlangpdf
    statserrorpdf statsevaluecdf statsevaluepdf statsexpcdf statsexppdf
    statsfcdf statsfpdf statsfriedmancdf statsgammacdf statsgammapdf
    statsgeometriccdf statsgeometricpdf statsgevcdf statsgevpdf
    statshypergcdf statshypergpdf statsinvbetacdf statsinvbinomialcdf
    statsinvcauchycdf statsinvchicdf statsinvcmssdcdf statsinvdexpcdf
    statsinvevaluecdf statsinvexpcdf statsinvfcdf statsinvfriedmancdf
    statsinvgammacdf statsinvgeometriccdf statsinvkuipercdf
    statsinvlogisticcdf statsinvlognormalcdf statsinvmaxwellcdf
    statsinvmoorecdf statsinvnbinomialcdf statsinvncchicdf statsinvncfcdf
    statsinvnormalcdf statsinvparetocdf statsinvpoissoncdf statsinvpowercdf
    statsinvqcdf statsinvqpcdf statsinvrayleighcdf statsinvrectangularcdf
    statsinvspearmancdf statsinvstudentcdf statsinvtopdowncdf
    statsinvtriangularcdf statsinvusquaredcdf statsinvvonmisescdf
    statsinvweibullcdf statskuipercdf statslogisticcdf statslogisticpdf
    statslognormalcdf statslognormalpdf statsmaxwellcdf statsmaxwellpdf
    statsmedian statsmoorecdf statsnbinomialcdf statsnbinomialpdf
    statsncchicdf statsncchipdf statsncfcdf statsncfpdf statsnctcdf
    statsnctpdf statsnormalcdf statsnormalpdf statsparetocdf statsparetopdf
    statspermute statspoissoncdf statspoissonpdf statspowercdf
    statspowernoise statspowerpdf statsqcdf statsqpcdf statsrayleighcdf
    statsrayleighpdf statsrectangularcdf statsrectangularpdf statsrunscdf
    statsspearmanrhocdf statsstudentcdf statsstudentpdf statstopdowncdf
    statstriangularcdf statstriangularpdf statstrimmedmean statsusquaredcdf
    statsvonmisescdf statsvonmisesnoise statsvonmisespdf statswaldcdf
    statswaldpdf statsweibullcdf statsweibullpdf stopmstimer str2num
    stringcrc stringmatch strlen strsearch studenta studentt sum svar_exists
    tagval tan tanh textencodingcode threadgroupcreate threadgrouprelease
    threadgroupwait threadprocessorcount threadreturnvalue ticks trunc
    unsetenvironmentvariable variance vcsr voigtfunc wavecrc wavedims
    waveexists wavemax wavemin waverefsequal wavetextencoding wavetype
    whichlistitem wintype wnoise x2pnt xcsr zcsr zerniker zeta addlistitem
    annotationinfo annotationlist axisinfo axislist base64_decode
    base64_encode capturehistory childwindowlist cleanupname contourinfo
    contournamelist controlnamelist converttextencoding csrinfo csrwave
    csrxwave ctablist datafolderdir date fetchurl fontlist funcrefinfo
    functioninfo functionlist functionpath getbrowserselection getdatafolder
    getdefaultfont getdimlabel getenvironmentvariable geterrmessage
    getformula getindependentmodulename getindexedobjname
    getindexedobjnamedfr getrterrmessage getrtlocinfo getrtstackinfo
    getscraptext getuserdata getwavesdatafolder greplist guideinfo
    guidenamelist hash igorinfo imageinfo imagenamelist
    independentmodulelist indexeddir indexedfile juliantodate layoutinfo
    listmatch lowerstr macrolist nameofwave normalizeunicode note num2char
    num2istr num2str operationlist padstring parsefilepath pathlist pictinfo
    pictlist possiblyquotename proceduretext removebykey removeending
    removefromlist removelistitem replacenumberbykey replacestring
    replacestringbykey secs2date secs2time selectstring sortlist
    specialcharacterinfo specialcharacterlist specialdirpath stringbykey
    stringfromlist stringlist strvarordefault tableinfo textencodingname
    textfile threadgroupgetdf time tracefrompixel traceinfo tracenamelist
    trimstring uniquename unpadstring upperstr urldecode urlencode
    variablelist waveinfo wavelist wavename waverefwavetolist waveunits
    winlist winname winrecreation wmfindwholeword xwavename
    contournametowaveref csrwaveref csrxwaveref imagenametowaveref
    listtotextwave listtowaverefwave newfreewave tagwaveref
    tracenametowaveref waverefindexed waverefindexeddfr xwavereffromtrace
    getdatafolderdfr getwavesdatafolderdfr newfreedatafolder
  )
end

def self.igorOperation

def self.igorOperation
  @igorOperation ||= Set.new %w(
    abort addfifodata addfifovectdata addmovieaudio addmovieframe adoptfiles
    apmath append appendimage appendlayoutobject appendmatrixcontour
    appendtext appendtogizmo appendtograph appendtolayout appendtotable
    appendxyzcontour autopositionwindow backgroundinfo beep boundingball
    browseurl buildmenu button cd chart checkbox checkdisplayed choosecolor
    close closehelp closemovie closeproc colorscale colortab2wave
    concatenate controlbar controlinfo controlupdate
    convertglobalstringtextencoding convexhull convolve copyfile copyfolder
    copyscales correlate createaliasshortcut createbrowser cross
    ctrlbackground ctrlfifo ctrlnamedbackground cursor curvefit
    customcontrol cwt debugger debuggeroptions defaultfont
    defaultguicontrols defaultguifont defaulttextencoding defineguide
    delayupdate deleteannotations deletefile deletefolder deletepoints
    differentiate dir display displayhelptopic displayprocedure doalert
    doigormenu doupdate dowindow doxopidle dpss drawaction drawarc
    drawbezier drawline drawoval drawpict drawpoly drawrect drawrrect
    drawtext drawusershape dspdetrend dspperiodogram duplicate
    duplicatedatafolder dwt edgestats edit errorbars execute
    executescripttext experimentmodified exportgizmo extract
    fastgausstransform fastop fbinread fbinwrite fft fgetpos fifo2wave
    fifostatus filterfir filteriir findcontour findduplicates findlevel
    findlevels findpeak findpointsinpoly findroots findsequence findvalue
    fpclustering fprintf freadline fsetpos fstatus ftpcreatedirectory
    ftpdelete ftpdownload ftpupload funcfit funcfitmd gbloadwave getaxis
    getcamera getfilefolderinfo getgizmo getlastusermenuinfo getmarquee
    getmouse getselection getwindow graphnormal graphwavedraw graphwaveedit
    grep groupbox hanning hideigormenus hideinfo hideprocedures hidetools
    hilberttransform histogram ica ifft imageanalyzeparticles imageblend
    imageboundarytomask imageedgedetection imagefileinfo imagefilter
    imagefocus imagefromxyz imagegenerateroimask imageglcm
    imagehistmodification imagehistogram imageinterpolate imagelineprofile
    imageload imagemorphology imageregistration imageremovebackground
    imagerestore imagerotate imagesave imageseedfill imageskeleton3d
    imagesnake imagestats imagethreshold imagetransform imageunwrapphase
    imagewindow indexsort insertpoints integrate integrate2d integrateode
    interp3dpath interpolate2 interpolate3d jcamploadwave jointhistogram
    killbackground killcontrol killdatafolder killfifo killfreeaxis killpath
    killpicts killstrings killvariables killwaves killwindow kmeans label
    layout layoutpageaction layoutslideshow legend
    linearfeedbackshiftregister listbox loaddata loadpackagepreferences
    loadpict loadwave loess lombperiodogram make makeindex markperftesttime
    matrixconvolve matrixcorr matrixeigenv matrixfilter matrixgaussj
    matrixglm matrixinverse matrixlinearsolve matrixlinearsolvetd matrixlls
    matrixlubksub matrixlud matrixludtd matrixmultiply matrixop matrixschur
    matrixsolve matrixsvbksub matrixsvd matrixtranspose measurestyledtext
    mlloadwave modify modifybrowser modifycamera modifycontour modifycontrol
    modifycontrollist modifyfreeaxis modifygizmo modifygraph modifyimage
    modifylayout modifypanel modifytable modifywaterfall movedatafolder
    movefile movefolder movestring movesubwindow movevariable movewave
    movewindow multitaperpsd multithreadingcontrol neuralnetworkrun
    neuralnetworktrain newcamera newdatafolder newfifo newfifochan
    newfreeaxis newgizmo newimage newlayout newmovie newnotebook newpanel
    newpath newwaterfall note notebook notebookaction open openhelp
    opennotebook optimize parseoperationtemplate pathinfo pauseforuser
    pauseupdate pca playmovie playmovieaction playsound popupcontextualmenu
    popupmenu preferences primefactors print printf printgraphs printlayout
    printnotebook printsettings printtable project pulsestats putscraptext
    pwd quit ratiofromnumber redimension remove removecontour
    removefromgizmo removefromgraph removefromlayout removefromtable
    removeimage removelayoutobjects removepath rename renamedatafolder
    renamepath renamepict renamewindow reorderimages reordertraces
    replacetext replacewave resample resumeupdate reverse rotate save
    savedata saveexperiment savegraphcopy savenotebook
    savepackagepreferences savepict savetablecopy setactivesubwindow setaxis
    setbackground setdashpattern setdatafolder setdimlabel setdrawenv
    setdrawlayer setfilefolderinfo setformula setigorhook setigormenumode
    setigoroption setmarquee setprocesssleep setrandomseed setscale
    setvariable setwavelock setwavetextencoding setwindow showigormenus
    showinfo showtools silent sleep slider smooth smoothcustom sort
    sortcolumns soundinrecord soundinset soundinstartchart soundinstatus
    soundinstopchart soundloadwave soundsavewave sphericalinterpolate
    sphericaltriangulate splitstring splitwave sprintf sscanf stack
    stackwindows statsangulardistancetest statsanova1test statsanova2nrtest
    statsanova2rmtest statsanova2test statschitest
    statscircularcorrelationtest statscircularmeans statscircularmoments
    statscirculartwosampletest statscochrantest statscontingencytable
    statsdiptest statsdunnetttest statsfriedmantest statsftest
    statshodgesajnetest statsjbtest statskde statskendalltautest statskstest
    statskwtest statslinearcorrelationtest statslinearregression
    statsmulticorrelationtest statsnpmctest statsnpnominalsrtest
    statsquantiles statsrankcorrelationtest statsresample statssample
    statsscheffetest statsshapirowilktest statssigntest statssrtest
    statsttest statstukeytest statsvariancestest statswatsonusquaredtest
    statswatsonwilliamstest statswheelerwatsontest statswilcoxonranktest
    statswrcorrelationtest structget structput sumdimension sumseries
    tabcontrol tag textbox threadgroupputdf threadstart tile tilewindows
    titlebox tocommandline toolsgrid triangulate3d unwrap urlrequest
    valdisplay waveclear wavemeanstdv wavestats wavetransform wfprintf
  )
end

def self.keywords

def self.keywords
  @keywords ||= Set.new %w(
    structure endstructure
    threadsafe static
    macro proc window menu function end
    if else elseif endif switch strswitch endswitch
    break return continue
    for endfor do while
    case default
    abortonrte
  )
end

def self.object_name

def self.object_name
  /[a-z][a-z0-9_]*\b/i
end

def self.preprocessor

def self.preprocessor
  @preprocessor ||= Set.new %w(
    pragma include
    define ifdef ifndef undef
    if elif else endif
  )
end