rouge 3.6.0 → 3.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -1
  3. data/lib/rouge/demos/ada +26 -0
  4. data/lib/rouge/demos/apex +9 -0
  5. data/lib/rouge/demos/armasm +12 -0
  6. data/lib/rouge/demos/batchfile +3 -0
  7. data/lib/rouge/demos/bbcbasic +6 -0
  8. data/lib/rouge/demos/clean +6 -0
  9. data/lib/rouge/demos/cmhg +8 -0
  10. data/lib/rouge/demos/csvs +8 -0
  11. data/lib/rouge/demos/cuda +11 -0
  12. data/lib/rouge/demos/cython +6 -0
  13. data/lib/rouge/demos/eex +1 -0
  14. data/lib/rouge/demos/epp +4 -0
  15. data/lib/rouge/demos/gdscript +18 -0
  16. data/lib/rouge/demos/haxe +5 -0
  17. data/lib/rouge/demos/hocon +8 -0
  18. data/lib/rouge/demos/hql +5 -0
  19. data/lib/rouge/demos/jsl +3 -0
  20. data/lib/rouge/demos/liquid +0 -1
  21. data/lib/rouge/demos/lustre +6 -0
  22. data/lib/rouge/demos/lutin +18 -0
  23. data/lib/rouge/demos/mason +22 -0
  24. data/lib/rouge/demos/msgtrans +4 -0
  25. data/lib/rouge/demos/opentype_feature_file +6 -0
  26. data/lib/rouge/demos/plist +1 -132
  27. data/lib/rouge/demos/reasonml +12 -0
  28. data/lib/rouge/demos/robot_framework +27 -0
  29. data/lib/rouge/demos/sas +13 -0
  30. data/lib/rouge/demos/sparql +6 -0
  31. data/lib/rouge/demos/terraform +0 -15
  32. data/lib/rouge/formatters/html_line_table.rb +3 -1
  33. data/lib/rouge/formatters/tex.rb +14 -12
  34. data/lib/rouge/guessers/disambiguation.rb +17 -0
  35. data/lib/rouge/lexers/ada.rb +162 -0
  36. data/lib/rouge/lexers/apex.rb +126 -0
  37. data/lib/rouge/lexers/armasm.rb +145 -0
  38. data/lib/rouge/lexers/batchfile.rb +164 -0
  39. data/lib/rouge/lexers/bbcbasic.rb +112 -0
  40. data/lib/rouge/lexers/clean.rb +156 -0
  41. data/lib/rouge/lexers/cmhg.rb +34 -0
  42. data/lib/rouge/lexers/common_lisp.rb +1 -1
  43. data/lib/rouge/lexers/console.rb +1 -1
  44. data/lib/rouge/lexers/coq.rb +12 -9
  45. data/lib/rouge/lexers/cpp.rb +4 -1
  46. data/lib/rouge/lexers/csvs.rb +44 -0
  47. data/lib/rouge/lexers/cuda.rb +35 -0
  48. data/lib/rouge/lexers/cython.rb +151 -0
  49. data/lib/rouge/lexers/eex.rb +51 -0
  50. data/lib/rouge/lexers/elixir.rb +20 -9
  51. data/lib/rouge/lexers/epp.rb +51 -0
  52. data/lib/rouge/lexers/escape.rb +3 -0
  53. data/lib/rouge/lexers/gdscript.rb +171 -0
  54. data/lib/rouge/lexers/gherkin.rb +4 -2
  55. data/lib/rouge/lexers/graphql.rb +10 -3
  56. data/lib/rouge/lexers/handlebars.rb +14 -3
  57. data/lib/rouge/lexers/haxe.rb +246 -0
  58. data/lib/rouge/lexers/hocon.rb +86 -0
  59. data/lib/rouge/lexers/hql.rb +139 -0
  60. data/lib/rouge/lexers/html.rb +2 -2
  61. data/lib/rouge/lexers/http.rb +5 -5
  62. data/lib/rouge/lexers/igorpro.rb +1 -1
  63. data/lib/rouge/lexers/javascript.rb +1 -1
  64. data/lib/rouge/lexers/jsl.rb +55 -0
  65. data/lib/rouge/lexers/json.rb +43 -5
  66. data/lib/rouge/lexers/julia.rb +1 -1
  67. data/lib/rouge/lexers/kotlin.rb +21 -28
  68. data/lib/rouge/lexers/liquid.rb +82 -108
  69. data/lib/rouge/lexers/lustre.rb +79 -0
  70. data/lib/rouge/lexers/lutin.rb +33 -0
  71. data/lib/rouge/lexers/make.rb +39 -12
  72. data/lib/rouge/lexers/mason.rb +115 -0
  73. data/lib/rouge/lexers/matlab.rb +4 -2
  74. data/lib/rouge/lexers/matlab/builtins.yml +3515 -0
  75. data/lib/rouge/lexers/msgtrans.rb +26 -0
  76. data/lib/rouge/lexers/ocaml.rb +12 -48
  77. data/lib/rouge/lexers/ocaml/common.rb +53 -0
  78. data/lib/rouge/lexers/opentype_feature_file.rb +113 -0
  79. data/lib/rouge/lexers/php.rb +31 -9
  80. data/lib/rouge/lexers/php/builtins.rb +181 -174
  81. data/lib/rouge/lexers/plain_text.rb +1 -1
  82. data/lib/rouge/lexers/puppet.rb +2 -2
  83. data/lib/rouge/lexers/q.rb +1 -1
  84. data/lib/rouge/lexers/r.rb +2 -3
  85. data/lib/rouge/lexers/reasonml.rb +65 -0
  86. data/lib/rouge/lexers/robot_framework.rb +249 -0
  87. data/lib/rouge/lexers/rust.rb +12 -9
  88. data/lib/rouge/lexers/sas.rb +563 -0
  89. data/lib/rouge/lexers/sed.rb +1 -1
  90. data/lib/rouge/lexers/shell.rb +5 -3
  91. data/lib/rouge/lexers/smarty.rb +10 -10
  92. data/lib/rouge/lexers/sparql.rb +129 -0
  93. data/lib/rouge/lexers/sql.rb +26 -6
  94. data/lib/rouge/lexers/swift.rb +1 -1
  95. data/lib/rouge/lexers/terraform.rb +8 -0
  96. data/lib/rouge/tex_theme_renderer.rb +5 -1
  97. data/lib/rouge/themes/magritte.rb +3 -3
  98. data/lib/rouge/themes/thankful_eyes.rb +1 -1
  99. data/lib/rouge/themes/tulip.rb +1 -1
  100. data/lib/rouge/version.rb +1 -1
  101. data/rouge.gemspec +4 -3
  102. metadata +61 -6
  103. data/lib/rouge/lexers/matlab/builtins.rb +0 -13
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: '0978a751e99189848662ab1f4d6b3763ff4ffc6bafa51d53f74a5f7d085492f5'
4
- data.tar.gz: 06b154a4db8264d688c8a279c04ca6d82f8f188ae184b75a4b75df8726af3b28
3
+ metadata.gz: af9642af1b39983bc72b54801f0986c921189c8f7cc8278d12eeae97c7902834
4
+ data.tar.gz: 57d9ff3da43e6af6786dea87123eaf1ae4c4b0eb02deaf080545bf9d9688c402
5
5
  SHA512:
6
- metadata.gz: 1296057ef9206c038ba0da5a2c06e7e9658c95ece00bc98e8b5e22d53865930fd132ea5c3bbb9eaf6d1590c38b4680e9a83e5a7101e6a4ad5aab1be4910f01d2
7
- data.tar.gz: 34acb9f469772310659845294d8fd3adfe989102cc6533a9632e64f41f1f20ad42f2e3951a0377ce8380b83b3a886178829c70868df987eb7f16f02b5f131272
6
+ metadata.gz: fa061de07871482934ed94381116ea44bdaafce68dea9a19a7c9852c89f32905d825a19abaa37d5aa6a43299c3b077b1658cc3e9dd6aa1ba0f814edf5d788e28
7
+ data.tar.gz: 55c77122c00af3eb4076e140a55a1d42a1ba1d3f2bc8c6c831f76feaf6e66636dc88f2ef17e07851711db91fb76868b5129c337f57ac94c913837e1d38f6fb1b
data/Gemfile CHANGED
@@ -22,12 +22,12 @@ end
22
22
 
23
23
  # Needed for a Rake task
24
24
  gem 'git'
25
+ gem 'yard'
25
26
 
26
27
  group :development do
27
28
  gem 'pry'
28
29
 
29
30
  # docs
30
- gem 'yard'
31
31
  gem 'github-markup'
32
32
 
33
33
  # for visual tests
@@ -0,0 +1,26 @@
1
+ with Ada.Directories;
2
+ with Ada.Direct_IO;
3
+ with Ada.Text_IO;
4
+
5
+ procedure Extra_IO.Read_File (Name : String) is
6
+
7
+ package Dirs renames Ada.Directories;
8
+ package Text_IO renames Ada.Text_IO;
9
+
10
+ -- Get the size of the file for a new string.
11
+ Size : Natural := Natural (Dirs.Size (Name));
12
+ subtype File_String is String (1 .. Size);
13
+
14
+ -- Instantiate Direct_IO for our file type.
15
+ package FIO is new Ada.Direct_IO (File_String);
16
+
17
+ File : FIO.File_Type;
18
+ Contents : File_String;
19
+
20
+ begin
21
+ FIO.Open (File, FIO.In_File, Name);
22
+ FIO.Read (File, Contents);
23
+ FIO.Close (File);
24
+
25
+ Text_IO.Put (Contents);
26
+ end Extra_IO.Read_File;
@@ -0,0 +1,9 @@
1
+ public class with sharing Trigger {
2
+ @Deprecated
3
+ public void resolveSum(int x, int y) {
4
+ System.debug('x is ' + x);
5
+ System.debug('y is ' + y);
6
+
7
+ System.debug('x + y = ' + (x+y));
8
+ }
9
+ }
@@ -0,0 +1,12 @@
1
+ GET common.s
2
+
3
+ RetVal * 0x123 :SHL: 4
4
+
5
+ AREA |Area$$Name|, CODE, READONLY
6
+
7
+ MyFunction ROUT ; This is a comment
8
+ ASSERT RetVal <> 0
9
+ 1 MOVW r0, #RetVal
10
+ BX lr
11
+
12
+ END
@@ -0,0 +1,3 @@
1
+ @echo off
2
+ setlocal enableextensions enabledelayedexpansion
3
+ for /f "tokens=*" %%a in ("hello !username! hi") do echo %%~a
@@ -0,0 +1,6 @@
1
+ REM > DefaultFilename
2
+ REM Ordinary comment
3
+ FOR n=1 TO 10
4
+ PRINTTAB(n)"Hello there ";FNnumber(n)DIV3+1
5
+ NEXT:END
6
+ DEFFNnumber(x%)=ABS(x%-4)
@@ -0,0 +1,6 @@
1
+ delete :: !a !.(Set a) -> Set a | < a
2
+ delete x Tip = Tip
3
+ delete x (Bin _ y l r)
4
+ | x < y = balanceR y (delete x l) r
5
+ | x > y = balanceL y l (delete x r)
6
+ | otherwise = glue l r
@@ -0,0 +1,8 @@
1
+ ; Header comments
2
+
3
+ #include "definitions.h"
4
+
5
+ command-keyword-table: command_handler
6
+ foo(min-args:0, max-args:0,; comment
7
+ international:,
8
+ invalid-syntax: "syntaxtoken" help-text: "helptoken")
@@ -0,0 +1,8 @@
1
+ version 1.1
2
+ @totalColumns 5
3
+ @separator ','
4
+ Transaction_Date: xDate
5
+ Transaction_ID: notEmpty
6
+ Originator_Name: notEmpty
7
+ Originator_Address: any("yes","no")
8
+ Originator_Country: notEmpty
@@ -0,0 +1,11 @@
1
+ #include <cstdio>
2
+
3
+ __global__ void helloFromGPU() {
4
+ std::printf("Hello World\n");
5
+ __syncthreads();
6
+ }
7
+
8
+ int main() {
9
+ dim3 block(1, 10);
10
+ helloFromGPU<<<1, block>>>();
11
+ }
@@ -0,0 +1,6 @@
1
+ cdef extern from 'foo.h':
2
+ int foo_int
3
+ struct foo_struct:
4
+ pass
5
+
6
+ ctypedef int word
@@ -0,0 +1 @@
1
+ <title><%= @title %></title>
@@ -0,0 +1,4 @@
1
+ <%- |
2
+ Optional[String] $title,
3
+ | -%>
4
+ <title><%= $title %></title>
@@ -0,0 +1,18 @@
1
+ extends Node
2
+
3
+ # Variables & Built-in Types
4
+
5
+ var a = 5
6
+ var b = true
7
+ var s = "Hello"
8
+ var arr = [1, 2, 3]
9
+
10
+ # Constants & Enums
11
+
12
+ const ANSWER = 42
13
+ enum { UNIT_NEUTRAL, UNIT_ENEMY, UNIT_ALLY }
14
+
15
+ # Functions
16
+
17
+ func _ready():
18
+ print("Hello, World")
@@ -0,0 +1,5 @@
1
+ // hello world!
2
+ public static function hello(arg : String) {
3
+ return 'Hello $arg';
4
+ }
5
+
@@ -0,0 +1,8 @@
1
+ # These are our own config values defined by the app
2
+ simple-app {
3
+ answer = 42
4
+ }
5
+
6
+ # Here we override some values used by a library
7
+ simple-lib.foo = "This value comes from simple-app's application.conf"
8
+ simple-lib.whatever = "This value comes from simple-app's application.conf"
@@ -0,0 +1,5 @@
1
+ SELECT e.first_name, e.last_name, d.department_name
2
+ FROM employees e
3
+ JOIN departments d ON e.department_id = d.department_id;
4
+
5
+ update `table` set name='abc', date=${date}, test_interpolation="${var1}.${var2}" where xyz is null;
@@ -0,0 +1,3 @@
1
+ // Create Distribution of Big Class
2
+ dt = open( "$sample_data\big class.jmp" );
3
+ dt << Distribution( Column( :age ), Histograms Only( 1 ) );
@@ -5,7 +5,6 @@
5
5
  Only {{ product.price | format_as_money }}
6
6
 
7
7
  <p>{{ product.description | prettyprint | truncate: 200 }}</p>
8
-
9
8
  </li>
10
9
  {% endfor %}
11
10
  </ul>
@@ -0,0 +1,6 @@
1
+ node count(init: int; reset, event: bool) returns (c: int);
2
+ let
3
+ c = init -> if reset then init
4
+ else if event then pre(c)+1
5
+ else pre(c);
6
+ tel;
@@ -0,0 +1,18 @@
1
+ node gen_x_v1() returns (x:real) = loop 0.0<x and x<42.0
2
+
3
+ node gen_x_v2() returns (x:real) =
4
+ loop { 0.0<x and x<42.0 fby loop [20] x = pre x }
5
+
6
+ node gen_x_v3() returns (target:real; x:real=0.0) =
7
+ run target := gen_x_v2() in
8
+ loop { x = (pre x + target) / 2.0 }
9
+
10
+ let inertia=0.6
11
+
12
+ node gen_x_v4() returns (target:real; x:real=0.0) =
13
+ run target := gen_x_v2() in
14
+ exist px,ppx : real = 0.0 in
15
+ loop {
16
+ px = pre x and ppx = pre px and
17
+ x = (px+target) / 2.0+inertia*(px-ppx)
18
+ }
@@ -0,0 +1,22 @@
1
+ <%doc>
2
+ This is a mason component.
3
+ # This is a comment.
4
+ </%doc>
5
+
6
+ <%args>
7
+ $color # this argument is required!
8
+ $size => 20 # default size
9
+ $country => undef # this argument is optional, default value is 'undef'
10
+ @items => (1, 2, 'something else')
11
+ %pairs => (name => "John", age => 29)
12
+ </%args>
13
+
14
+ % # A random block of Perl code
15
+ <%perl>
16
+ my @people = ('mary' 'john' 'pete' 'david');
17
+ </%perl>
18
+
19
+ % # Note how each line of code begins with the mandatory %
20
+ % foreach my $person (@people) {
21
+ Name: <% $person %>
22
+ % }
@@ -0,0 +1,4 @@
1
+ # Example MessageTrans file
2
+ Token
3
+ Token0x??:Replacement localised %0 text
4
+ Color/Colour:Colour
@@ -0,0 +1,6 @@
1
+ languagesystem DFLT dflt;
2
+
3
+ feature liga {
4
+ sub f i by f_i;
5
+ } liga;
6
+
@@ -5,138 +5,7 @@
5
5
  };
6
6
  objectVersion = 46;
7
7
  objects = {
8
-
9
- /* Begin PBXGroup section */
10
- 1D67B9537FE4C81097096F85 /* Frameworks */ = {
11
- isa = PBXGroup;
12
- children = (
13
- );
14
- name = Frameworks;
15
- sourceTree = "<group>";
16
- };
17
- 74946460D3EE9E1FA4792785 = {
18
- isa = PBXGroup;
19
- children = (
20
- E3060171E73473A889949AB5 /* Products */,
21
- 1D67B9537FE4C81097096F85 /* Frameworks */,
22
- );
23
- sourceTree = "<group>";
24
- };
25
- E3060171E73473A889949AB5 /* Products */ = {
26
- isa = PBXGroup;
27
- children = (
28
- );
29
- name = Products;
30
- sourceTree = "<group>";
31
- };
32
- /* End PBXGroup section */
33
-
34
- /* Begin PBXProject section */
35
- B3A67937542EC2041CBF1CA2 /* Project object */ = {
36
- isa = PBXProject;
37
- attributes = {
38
- LastSwiftUpdateCheck = 0730;
39
- LastUpgradeCheck = 0700;
40
- };
41
- buildConfigurationList = 442CE273DD7DF2DFDC620C8B /* Build configuration list for PBXProject "foo" */;
42
- compatibilityVersion = "Xcode 3.2";
43
- developmentRegion = English;
44
- hasScannedForEncodings = 0;
45
- knownRegions = (
46
- en,
47
- );
48
- mainGroup = 74946460D3EE9E1FA4792785;
49
- productRefGroup = E3060171E73473A889949AB5 /* Products */;
50
- projectDirPath = "";
51
- projectRoot = "";
52
- targets = (
53
- );
54
- };
55
- /* End PBXProject section */
56
-
57
- /* Begin XCBuildConfiguration section */
58
- 09AC0D63F19B6944E1045E60 /* Release */ = {
59
- isa = XCBuildConfiguration;
60
- buildSettings = {
61
- ALWAYS_SEARCH_USER_PATHS = NO;
62
- CLANG_ANALYZER_NONNULL = YES;
63
- CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
64
- CLANG_CXX_LIBRARY = "libc++";
65
- CLANG_ENABLE_MODULES = YES;
66
- CLANG_ENABLE_OBJC_ARC = YES;
67
- CLANG_WARN_BOOL_CONVERSION = YES;
68
- CLANG_WARN_CONSTANT_CONVERSION = YES;
69
- CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES;
70
- CLANG_WARN_EMPTY_BODY = YES;
71
- CLANG_WARN_ENUM_CONVERSION = YES;
72
- CLANG_WARN_INT_CONVERSION = YES;
73
- CLANG_WARN_OBJC_ROOT_CLASS = YES;
74
- CLANG_WARN_UNREACHABLE_CODE = YES;
75
- CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
76
- COPY_PHASE_STRIP = YES;
77
- ENABLE_NS_ASSERTIONS = NO;
78
- GCC_C_LANGUAGE_STANDARD = gnu99;
79
- GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
80
- GCC_WARN_ABOUT_RETURN_TYPE = YES;
81
- GCC_WARN_UNDECLARED_SELECTOR = YES;
82
- GCC_WARN_UNINITIALIZED_AUTOS = YES;
83
- GCC_WARN_UNUSED_FUNCTION = YES;
84
- GCC_WARN_UNUSED_VARIABLE = YES;
85
- VALIDATE_PRODUCT = YES;
86
- };
87
- name = Release;
88
- };
89
- 4D494CA5F82DCCAB3194BA09 /* Debug */ = {
90
- isa = XCBuildConfiguration;
91
- buildSettings = {
92
- ALWAYS_SEARCH_USER_PATHS = NO;
93
- CLANG_ANALYZER_NONNULL = YES;
94
- CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
95
- CLANG_CXX_LIBRARY = "libc++";
96
- CLANG_ENABLE_MODULES = YES;
97
- CLANG_ENABLE_OBJC_ARC = YES;
98
- CLANG_WARN_BOOL_CONVERSION = YES;
99
- CLANG_WARN_CONSTANT_CONVERSION = YES;
100
- CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES;
101
- CLANG_WARN_EMPTY_BODY = YES;
102
- CLANG_WARN_ENUM_CONVERSION = YES;
103
- CLANG_WARN_INT_CONVERSION = YES;
104
- CLANG_WARN_OBJC_ROOT_CLASS = YES;
105
- CLANG_WARN_UNREACHABLE_CODE = YES;
106
- CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
107
- COPY_PHASE_STRIP = NO;
108
- ENABLE_TESTABILITY = YES;
109
- GCC_C_LANGUAGE_STANDARD = gnu99;
110
- GCC_DYNAMIC_NO_PIC = NO;
111
- GCC_OPTIMIZATION_LEVEL = 0;
112
- GCC_PREPROCESSOR_DEFINITIONS = (
113
- "DEBUG=1",
114
- "$(inherited)",
115
- );
116
- GCC_SYMBOLS_PRIVATE_EXTERN = NO;
117
- GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
118
- GCC_WARN_ABOUT_RETURN_TYPE = YES;
119
- GCC_WARN_UNDECLARED_SELECTOR = YES;
120
- GCC_WARN_UNINITIALIZED_AUTOS = YES;
121
- GCC_WARN_UNUSED_FUNCTION = YES;
122
- GCC_WARN_UNUSED_VARIABLE = YES;
123
- ONLY_ACTIVE_ARCH = YES;
124
- };
125
- name = Debug;
126
- };
127
- /* End XCBuildConfiguration section */
128
-
129
- /* Begin XCConfigurationList section */
130
- 442CE273DD7DF2DFDC620C8B /* Build configuration list for PBXProject "foo" */ = {
131
- isa = XCConfigurationList;
132
- buildConfigurations = (
133
- 4D494CA5F82DCCAB3194BA09 /* Debug */,
134
- 09AC0D63F19B6944E1045E60 /* Release */,
135
- );
136
- defaultConfigurationIsVisible = 0;
137
- defaultConfigurationName = Release;
138
- };
139
- /* End XCConfigurationList section */
8
+ /* ... */
140
9
  };
141
10
  rootObject = B3A67937542EC2041CBF1CA2 /* Project object */;
142
11
  }
@@ -0,0 +1,12 @@
1
+ /* I like a teacher who gives you something to take
2
+ home to think about besides homework. */
3
+ let gpa_score = 5.0;
4
+ type schoolPerson = Teacher | Director | Student(string);
5
+
6
+ let greeting = person =>
7
+ switch (person) {
8
+ | Teacher => "Hey Professor!"
9
+ | Director => "Hello Director."
10
+ | Student("Richard") => "Still here Ricky?"
11
+ | Student(anyOtherName) => "Hey, " ++ anyOtherName ++ "."
12
+ };
@@ -0,0 +1,27 @@
1
+ *** Settings ***
2
+ Document Example taken from http://robotframework.org/
3
+ Suite Setup Open Browser To Login Page
4
+ Suite Teardown Close Browser
5
+ Test Setup Go To Login Page
6
+ Test Template Login With Invalid Credentials Should Fail
7
+ Resource resource.txt
8
+
9
+ *** Test Cases *** User Name Password
10
+ Invalid Username invalid ${VALID PASSWORD}
11
+ Invalid Password ${VALID USER} invalid
12
+ Invalid Username And Password invalid whatever
13
+ Empty Username ${EMPTY} ${VALID PASSWORD}
14
+ Empty Password ${VALID USER} ${EMPTY}
15
+ Empty Username And Password ${EMPTY} ${EMPTY}
16
+
17
+ *** Keywords ***
18
+ Login With Invalid Credentials Should Fail
19
+ [Arguments] ${username} ${password}
20
+ Input Username ${username}
21
+ Input Password ${password}
22
+ Submit Credentials
23
+ Login Should Have Failed
24
+
25
+ Login Should Have Failed
26
+ Location Should Be ${ERROR URL}
27
+ Title Should Be Error Page