-
Notifications
You must be signed in to change notification settings - Fork 5.3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: Add Robot Framework syntax highlighting
Add Robot Framework syntax highlighting #4614 from SullyJHF/robot-lang
- Loading branch information
Showing
6 changed files
with
495 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,209 @@ | ||
*** Settings *** | ||
Documentation Robot Framework 4 syntax recipes cheat sheet robot. | ||
... Demonstrates Robot Framework syntax in a concise format. | ||
Library MyLibrary | ||
Library MyLibrary WITH NAME HelloLibrary | ||
Library MyLibrary greeting=Howdy! WITH NAME HowdyLibrary | ||
Resource keywords.robot | ||
Suite Setup Log Suite Setup! | ||
Suite Teardown Log Suite Teardown! | ||
Test Setup Log Test Setup! | ||
Test Teardown Log Test Teardown! | ||
Test Timeout 2 minutes | ||
Variables variables.py | ||
|
||
*** Variables *** | ||
${STRING}= cat | ||
${NUMBER}= ${1} | ||
@{LIST}= one two three | ||
&{DICTIONARY}= string=${STRING} number=${NUMBER} list=@{LIST} | ||
${ENVIRONMENT_VARIABLE}= %{PATH=Default value} | ||
|
||
*** Keywords *** | ||
A keyword without arguments | ||
Log No arguments. | ||
|
||
A keyword with a required argument | ||
[Arguments] ${argument} | ||
Log Required argument: ${argument} | ||
|
||
A keyword with an optional argument | ||
[Arguments] ${argument}=Default value | ||
Log Optional argument: ${argument} | ||
... Another arg | ||
|
||
A keyword with any number of arguments | ||
[Arguments] @{varargs} | ||
Log Any number of arguments: @{varargs} | ||
|
||
A keyword with one or more arguments | ||
[Arguments] ${argument} @{varargs} | ||
Log One or more arguments: ${argument} @{varargs} | ||
|
||
A keyword that returns a value | ||
[Return] Return value | ||
|
||
A keyword with documentation | ||
[Documentation] This is keyword documentation. | ||
No Operation | ||
|
||
*** Test Cases *** | ||
Call keywords with a varying number of arguments | ||
[Tags] Test Another Tag | ||
A keyword without arguments | ||
A keyword with a required argument Argument | ||
A keyword with a required argument argument=Argument | ||
A keyword with an optional argument | ||
A keyword with an optional argument Argument | ||
A keyword with an optional argument argument=Argument | ||
A keyword with any number of arguments | ||
A keyword with any number of arguments arg1 arg2 arg3 arg4 arg5 | ||
A keyword with one or more arguments arg1 | ||
A keyword with one or more arguments arg1 arg2 arg3 | ||
|
||
Call a keyword that returns a value | ||
${value}= A keyword that returns a value | ||
Log ${value} # Return value | ||
|
||
Do conditional IF - ELSE IF - ELSE execution | ||
IF ${NUMBER} > 1 | ||
Log Greater than one. | ||
ELSE IF "${STRING}" == "dog" | ||
Log It's a dog! | ||
ELSE | ||
Log Probably a cat. 🤔 | ||
END | ||
|
||
Loop a list | ||
Log ${LIST} # ['one', 'two', 'three'] | ||
FOR ${item} IN @{LIST} | ||
Log ${item} # one, two, three | ||
END | ||
FOR ${item} IN one two three | ||
Log ${item} # one, two, three | ||
END | ||
|
||
Loop a dictionary | ||
Log ${DICTIONARY} | ||
# {'string': 'cat', 'number': 1, 'list': ['one', 'two', 'three']} | ||
FOR ${key_value_tuple} IN &{DICTIONARY} | ||
Log ${key_value_tuple} | ||
# ('string', 'cat'), ('number', 1), ('list', ['one', 'two', 'three']) | ||
END | ||
FOR ${key} IN @{DICTIONARY} | ||
Log ${key}=${DICTIONARY}[${key}] | ||
# string=cat, number=1, list=['one', 'two', 'three'] | ||
END | ||
|
||
Loop a range from 0 to end index | ||
FOR ${index} IN RANGE 10 | ||
Log ${index} # 0-9 | ||
END | ||
|
||
Loop a range from start to end index | ||
FOR ${index} IN RANGE 1 10 | ||
Log ${index} # 1-9 | ||
END | ||
|
||
Loop a range from start to end index with steps | ||
FOR ${index} IN RANGE 0 10 2 | ||
Log ${index} # 0, 2, 4, 6, 8 | ||
END | ||
|
||
Nest loops | ||
@{alphabets}= Create List a b c | ||
Log ${alphabets} # ['a', 'b', 'c'] | ||
@{numbers}= Create List ${1} ${2} ${3} | ||
Log ${numbers} # [1, 2, 3] | ||
FOR ${alphabet} IN @{alphabets} | ||
FOR ${number} IN @{numbers} | ||
Log ${alphabet}${number} | ||
# a1, a2, a3, b1, b2, b3, c1, c2, c3 | ||
END | ||
END | ||
|
||
Exit a loop on condition | ||
FOR ${i} IN RANGE 5 | ||
Exit For Loop If ${i} == 2 | ||
Log ${i} # 0, 1 | ||
END | ||
|
||
Continue a loop from the next iteration on condition | ||
FOR ${i} IN RANGE 3 | ||
Continue For Loop If ${i} == 1 | ||
Log ${i} # 0, 2 | ||
END | ||
|
||
Create a scalar variable | ||
${animal}= Set Variable dog | ||
Log ${animal} # dog | ||
Log ${animal}[0] # d | ||
Log ${animal}[-1] # g | ||
|
||
Create a number variable | ||
${π}= Set Variable ${3.14} | ||
Log ${π} # 3.14 | ||
|
||
Create a list variable | ||
@{animals}= Create List dog cat bear | ||
Log ${animals} # ['dog', 'cat', 'bear'] | ||
Log ${animals}[0] # dog | ||
Log ${animals}[-1] # bear | ||
|
||
Create a dictionary variable | ||
&{dictionary}= Create Dictionary key1=value1 key2=value2 | ||
Log ${dictionary} # {'key1': 'value1', 'key2': 'value2'} | ||
Log ${dictionary}[key1] # value1 | ||
Log ${dictionary.key2} # value2 | ||
|
||
Access the items in a sequence (list, string) | ||
${string}= Set Variable Hello world! | ||
Log ${string}[0] # H | ||
Log ${string}[:5] # Hello | ||
Log ${string}[6:] # world! | ||
Log ${string}[-1] # ! | ||
@{list}= Create List one two three four five | ||
Log ${list} # ['one', 'two', 'three', 'four', 'five'] | ||
Log ${list}[0:6:2] # ['one', 'three', 'five'] | ||
|
||
Call a custom Python library | ||
${greeting}= MyLibrary.Get Greeting | ||
Log ${greeting} # Hello! | ||
${greeting}= HelloLibrary.Get Greeting | ||
Log ${greeting} # Hello! | ||
${greeting}= HowdyLibrary.Get Greeting | ||
Log ${greeting} # Howdy! | ||
|
||
Call a keyword from a separate resource file | ||
My keyword in a separate resource file | ||
|
||
Access a variable in a separate variable file | ||
Log ${MY_VARIABLE_FROM_A_SEPARATE_VARIABLE_FILE} | ||
|
||
Split arguments to multiple lines | ||
A keyword with any number of arguments | ||
... arg1 | ||
... arg2 | ||
... arg3 | ||
|
||
Log available variables | ||
Log Variables | ||
# ${/} = / | ||
# &{DICTIONARY} = { string=cat | number=1 | list=['one', 'two', 'three'] } | ||
# ${OUTPUT_DIR} = /Users/<username>/... | ||
# ... | ||
|
||
Evaluate Python expressions | ||
${path}= Evaluate os.environ.get("PATH") | ||
${path}= Set Variable ${{os.environ.get("PATH")}} | ||
|
||
Use special variables | ||
Log ${EMPTY} # Like the ${SPACE}, but without the space. | ||
Log ${False} # Boolean False. | ||
Log ${None} # Python None | ||
Log ${null} # Java null. | ||
Log ${SPACE} # ASCII space (\x20). | ||
Log ${SPACE * 4} # Four spaces. | ||
Log "${SPACE}" # Quoted space (" "). | ||
Log ${True} # Boolean True. | ||
LOG ${CURDIR} # Current directory |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
/* ***** BEGIN LICENSE BLOCK ***** | ||
* Distributed under the BSD license: | ||
* | ||
* Copyright (c) 2010, Ajax.org B.V. | ||
* All rights reserved. | ||
* | ||
* Redistribution and use in source and binary forms, with or without | ||
* modification, are permitted provided that the following conditions are met: | ||
* * Redistributions of source code must retain the above copyright | ||
* notice, this list of conditions and the following disclaimer. | ||
* * Redistributions in binary form must reproduce the above copyright | ||
* notice, this list of conditions and the following disclaimer in the | ||
* documentation and/or other materials provided with the distribution. | ||
* * Neither the name of Ajax.org B.V. nor the | ||
* names of its contributors may be used to endorse or promote products | ||
* derived from this software without specific prior written permission. | ||
* | ||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
* DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY | ||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
* | ||
* ***** END LICENSE BLOCK ***** */ | ||
|
||
define(function(require, exports, module) { | ||
"use strict"; | ||
|
||
var oop = require("../lib/oop"); | ||
var TextMode = require("./text").Mode; | ||
var RobotHighlightRules = require("./robot_highlight_rules").RobotHighlightRules; | ||
var FoldMode = require("./folding/pythonic").FoldMode; | ||
|
||
var Mode = function() { | ||
this.HighlightRules = RobotHighlightRules; | ||
this.foldingRules = new FoldMode(); | ||
this.$behaviour = this.$defaultBehaviour; | ||
}; | ||
oop.inherits(Mode, TextMode); | ||
|
||
(function() { | ||
this.lineCommentStart = "#"; | ||
this.$id = "ace/mode/robot"; | ||
this.snippetFileId = "ace/snippets/robot"; | ||
}).call(Mode.prototype); | ||
|
||
exports.Mode = Mode; | ||
}); |
Oops, something went wrong.