clucumber 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (139) hide show
  1. data/LICENSE +1 -1
  2. data/README.md +4 -9
  3. data/lib/clucumber/clucumber-bootstrap.lisp +32 -0
  4. data/lib/clucumber/vendor/cl-interpol/alias.lisp +55 -0
  5. data/lib/clucumber/vendor/cl-interpol/cl-interpol.asd +56 -0
  6. data/lib/clucumber/vendor/cl-interpol/load.lisp +53 -0
  7. data/lib/clucumber/vendor/cl-interpol/packages.lisp +40 -0
  8. data/lib/clucumber/vendor/cl-interpol/read.lisp +716 -0
  9. data/lib/clucumber/vendor/cl-interpol/specials.lisp +113 -0
  10. data/lib/clucumber/vendor/cl-interpol/test/packages.lisp +34 -0
  11. data/lib/clucumber/vendor/cl-interpol/test/tests.lisp +128 -0
  12. data/lib/clucumber/vendor/cl-interpol/test.lisp +177 -0
  13. data/lib/clucumber/vendor/cl-interpol/test2.lisp +6254 -0
  14. data/lib/clucumber/vendor/cl-interpol/unicode.lisp +13912 -0
  15. data/lib/clucumber/vendor/cl-interpol/util.lisp +122 -0
  16. data/lib/clucumber/vendor/cl-ppcre/api.lisp +1262 -0
  17. data/lib/clucumber/vendor/cl-ppcre/charmap.lisp +152 -0
  18. data/lib/clucumber/vendor/cl-ppcre/charset.lisp +242 -0
  19. data/lib/clucumber/vendor/cl-ppcre/chartest.lisp +98 -0
  20. data/lib/clucumber/vendor/cl-ppcre/cl-ppcre-test.asd +34 -0
  21. data/lib/clucumber/vendor/cl-ppcre/cl-ppcre-unicode/packages.lisp +38 -0
  22. data/lib/clucumber/vendor/cl-ppcre/cl-ppcre-unicode/resolver.lisp +61 -0
  23. data/lib/clucumber/vendor/cl-ppcre/cl-ppcre-unicode.asd +58 -0
  24. data/lib/clucumber/vendor/cl-ppcre/cl-ppcre.asd +79 -0
  25. data/lib/clucumber/vendor/cl-ppcre/closures.lisp +471 -0
  26. data/lib/clucumber/vendor/cl-ppcre/convert.lisp +875 -0
  27. data/lib/clucumber/vendor/cl-ppcre/errors.lisp +84 -0
  28. data/lib/clucumber/vendor/cl-ppcre/lexer.lisp +737 -0
  29. data/lib/clucumber/vendor/cl-ppcre/lispworks-defsystem.lisp +57 -0
  30. data/lib/clucumber/vendor/cl-ppcre/load.lisp +67 -0
  31. data/lib/clucumber/vendor/cl-ppcre/optimize.lisp +578 -0
  32. data/lib/clucumber/vendor/cl-ppcre/packages.lisp +68 -0
  33. data/lib/clucumber/vendor/cl-ppcre/parser.lisp +319 -0
  34. data/lib/clucumber/vendor/cl-ppcre/ppcre-tests.lisp +269 -0
  35. data/lib/clucumber/vendor/cl-ppcre/regex-class-util.lisp +555 -0
  36. data/lib/clucumber/vendor/cl-ppcre/regex-class.lisp +259 -0
  37. data/lib/clucumber/vendor/cl-ppcre/repetition-closures.lisp +833 -0
  38. data/lib/clucumber/vendor/cl-ppcre/scanner.lisp +506 -0
  39. data/lib/clucumber/vendor/cl-ppcre/specials.lisp +172 -0
  40. data/lib/clucumber/vendor/cl-ppcre/test/packages.lisp +37 -0
  41. data/lib/clucumber/vendor/cl-ppcre/test/perl-tests.lisp +150 -0
  42. data/lib/clucumber/vendor/cl-ppcre/test/tests.lisp +159 -0
  43. data/lib/clucumber/vendor/cl-ppcre/test/unicode-tests.lisp +80 -0
  44. data/lib/clucumber/vendor/cl-ppcre/util.lisp +201 -0
  45. data/lib/clucumber/vendor/cl-unicode/alias.lisp +135 -0
  46. data/lib/clucumber/vendor/cl-unicode/api.lisp +412 -0
  47. data/lib/clucumber/vendor/cl-unicode/build/char-info.lisp +133 -0
  48. data/lib/clucumber/vendor/cl-unicode/build/dump.lisp +239 -0
  49. data/lib/clucumber/vendor/cl-unicode/build/read.lisp +280 -0
  50. data/lib/clucumber/vendor/cl-unicode/build/util.lisp +182 -0
  51. data/lib/clucumber/vendor/cl-unicode/cl-unicode.asd +90 -0
  52. data/lib/clucumber/vendor/cl-unicode/conditions.lisp +54 -0
  53. data/lib/clucumber/vendor/cl-unicode/derived.lisp +120 -0
  54. data/lib/clucumber/vendor/cl-unicode/hash-tables.lisp +20 -0
  55. data/lib/clucumber/vendor/cl-unicode/lists.lisp +10 -0
  56. data/lib/clucumber/vendor/cl-unicode/methods.lisp +15 -0
  57. data/lib/clucumber/vendor/cl-unicode/packages.lisp +76 -0
  58. data/lib/clucumber/vendor/cl-unicode/specials.lisp +135 -0
  59. data/lib/clucumber/vendor/cl-unicode/test/packages.lisp +34 -0
  60. data/lib/clucumber/vendor/cl-unicode/test/tests.lisp +150 -0
  61. data/lib/clucumber/vendor/cl-unicode/test-functions.lisp +94 -0
  62. data/lib/clucumber/vendor/cl-unicode/util.lisp +274 -0
  63. data/lib/clucumber/vendor/lift/compare/fiveam-tests.lisp +14 -0
  64. data/lib/clucumber/vendor/lift/compare/lift-tests.lisp +13 -0
  65. data/lib/clucumber/vendor/lift/compare/rt-tests.lisp +16 -0
  66. data/lib/clucumber/vendor/lift/compare/xlunit-tests.lisp +15 -0
  67. data/lib/clucumber/vendor/lift/dev/changes.lisp +61 -0
  68. data/lib/clucumber/vendor/lift/dev/config.lisp +354 -0
  69. data/lib/clucumber/vendor/lift/dev/copy-file.lisp +117 -0
  70. data/lib/clucumber/vendor/lift/dev/introspection.lisp +232 -0
  71. data/lib/clucumber/vendor/lift/dev/lift-interface.lisp +56 -0
  72. data/lib/clucumber/vendor/lift/dev/lift-notes.lisp +202 -0
  73. data/lib/clucumber/vendor/lift/dev/lift-randomized.lisp +45 -0
  74. data/lib/clucumber/vendor/lift/dev/lift.lisp +2383 -0
  75. data/lib/clucumber/vendor/lift/dev/macros.lisp +229 -0
  76. data/lib/clucumber/vendor/lift/dev/measuring.lisp +156 -0
  77. data/lib/clucumber/vendor/lift/dev/packages.lisp +161 -0
  78. data/lib/clucumber/vendor/lift/dev/port.lisp +151 -0
  79. data/lib/clucumber/vendor/lift/dev/prototypes.lisp +282 -0
  80. data/lib/clucumber/vendor/lift/dev/random-testing.lisp +124 -0
  81. data/lib/clucumber/vendor/lift/dev/report-locations.lisp +13 -0
  82. data/lib/clucumber/vendor/lift/dev/reports.lisp +916 -0
  83. data/lib/clucumber/vendor/lift/dev/utilities.lisp +242 -0
  84. data/lib/clucumber/vendor/lift/docs/package.lisp +6 -0
  85. data/lib/clucumber/vendor/lift/docs/setup.lisp +17 -0
  86. data/lib/clucumber/vendor/lift/examples/basic-examples.lisp +289 -0
  87. data/lib/clucumber/vendor/lift/examples/random-testing.lisp +32 -0
  88. data/lib/clucumber/vendor/lift/lift-documentation.asd +28 -0
  89. data/lib/clucumber/vendor/lift/lift-test.asd +35 -0
  90. data/lib/clucumber/vendor/lift/lift.asd +77 -0
  91. data/lib/clucumber/vendor/lift/test/equality-tests.lisp +40 -0
  92. data/lib/clucumber/vendor/lift/test/finding-tests.lisp +32 -0
  93. data/lib/clucumber/vendor/lift/test/lift-test.lisp +783 -0
  94. data/lib/clucumber/vendor/lift/test/order-of-operations.lisp +54 -0
  95. data/lib/clucumber/vendor/lift/test/packages.lisp +17 -0
  96. data/lib/clucumber/vendor/lift/test/test-config-files.lisp +20 -0
  97. data/lib/clucumber/vendor/lift/test/test-dynamic-variables.lisp +57 -0
  98. data/lib/clucumber/vendor/lift/test/test-maximum-problems.lisp +74 -0
  99. data/lib/clucumber/vendor/lift/test/test-prototypes.lisp +278 -0
  100. data/lib/clucumber/vendor/lift/test/test-timeout.lisp +37 -0
  101. data/lib/clucumber/vendor/lift/test/tests-in-progress.lisp +62 -0
  102. data/lib/clucumber/vendor/lift/test/testsuite-expects.lisp +60 -0
  103. data/lib/clucumber/vendor/lift/timeout/package.lisp +13 -0
  104. data/lib/clucumber/vendor/lift/timeout/with-timeout.lisp +123 -0
  105. data/lib/clucumber/vendor/lift/website/stuff/Temp.lisp +34 -0
  106. data/lib/clucumber/vendor/st-json/st-json.asd +3 -0
  107. data/lib/clucumber/vendor/st-json/st-json.lisp +310 -0
  108. data/lib/clucumber/vendor/trivial-backtrace/dev/backtrace.lisp +127 -0
  109. data/lib/clucumber/vendor/trivial-backtrace/dev/fallback.lisp +10 -0
  110. data/lib/clucumber/vendor/trivial-backtrace/dev/map-backtrace.lisp +103 -0
  111. data/lib/clucumber/vendor/trivial-backtrace/dev/mucking.lisp +75 -0
  112. data/lib/clucumber/vendor/trivial-backtrace/dev/packages.lisp +13 -0
  113. data/lib/clucumber/vendor/trivial-backtrace/dev/utilities.lisp +104 -0
  114. data/lib/clucumber/vendor/trivial-backtrace/test/packages.lisp +5 -0
  115. data/lib/clucumber/vendor/trivial-backtrace/test/test-setup.lisp +4 -0
  116. data/lib/clucumber/vendor/trivial-backtrace/test/tests.lisp +16 -0
  117. data/lib/clucumber/vendor/trivial-backtrace/trivial-backtrace-test.asd +22 -0
  118. data/lib/clucumber/vendor/trivial-backtrace/trivial-backtrace.asd +35 -0
  119. data/lib/clucumber/vendor/usocket/backend/allegro.lisp +199 -0
  120. data/lib/clucumber/vendor/usocket/backend/armedbear.lisp +491 -0
  121. data/lib/clucumber/vendor/usocket/backend/clisp.lisp +260 -0
  122. data/lib/clucumber/vendor/usocket/backend/cmucl.lisp +266 -0
  123. data/lib/clucumber/vendor/usocket/backend/lispworks.lisp +741 -0
  124. data/lib/clucumber/vendor/usocket/backend/mcl.lisp +369 -0
  125. data/lib/clucumber/vendor/usocket/backend/openmcl.lisp +206 -0
  126. data/lib/clucumber/vendor/usocket/backend/sbcl.lisp +424 -0
  127. data/lib/clucumber/vendor/usocket/backend/scl.lisp +261 -0
  128. data/lib/clucumber/vendor/usocket/condition.lisp +227 -0
  129. data/lib/clucumber/vendor/usocket/package.lisp +82 -0
  130. data/lib/clucumber/vendor/usocket/server.lisp +45 -0
  131. data/lib/clucumber/vendor/usocket/test/package.lisp +13 -0
  132. data/lib/clucumber/vendor/usocket/test/test-usocket.lisp +166 -0
  133. data/lib/clucumber/vendor/usocket/usocket-test.asd +26 -0
  134. data/lib/clucumber/vendor/usocket/usocket.asd +37 -0
  135. data/lib/clucumber/vendor/usocket/usocket.lisp +542 -0
  136. data/lib/clucumber/vendor/usocket/vendor/kqueue.lisp +1 -0
  137. data/lib/clucumber/vendor/usocket/vendor/split-sequence.lisp +245 -0
  138. data/lib/clucumber.rb +29 -7
  139. metadata +151 -5
@@ -0,0 +1,259 @@
1
+ ;;; -*- Mode: LISP; Syntax: COMMON-LISP; Package: CL-PPCRE; Base: 10 -*-
2
+ ;;; $Header: /usr/local/cvsrep/cl-ppcre/regex-class.lisp,v 1.44 2009/10/28 07:36:15 edi Exp $
3
+
4
+ ;;; This file defines the REGEX class. REGEX objects are used to
5
+ ;;; represent the (transformed) parse trees internally
6
+
7
+ ;;; Copyright (c) 2002-2009, Dr. Edmund Weitz. All rights reserved.
8
+
9
+ ;;; Redistribution and use in source and binary forms, with or without
10
+ ;;; modification, are permitted provided that the following conditions
11
+ ;;; are met:
12
+
13
+ ;;; * Redistributions of source code must retain the above copyright
14
+ ;;; notice, this list of conditions and the following disclaimer.
15
+
16
+ ;;; * Redistributions in binary form must reproduce the above
17
+ ;;; copyright notice, this list of conditions and the following
18
+ ;;; disclaimer in the documentation and/or other materials
19
+ ;;; provided with the distribution.
20
+
21
+ ;;; THIS SOFTWARE IS PROVIDED BY THE AUTHOR 'AS IS' AND ANY EXPRESSED
22
+ ;;; OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
23
+ ;;; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24
+ ;;; ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
25
+ ;;; DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26
+ ;;; DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
27
+ ;;; GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
28
+ ;;; INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
29
+ ;;; WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
30
+ ;;; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
31
+ ;;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32
+
33
+ (in-package :cl-ppcre)
34
+
35
+ (defclass regex ()
36
+ ()
37
+ (:documentation "The REGEX base class. All other classes inherit
38
+ from this one."))
39
+
40
+ (defclass seq (regex)
41
+ ((elements :initarg :elements
42
+ :accessor elements
43
+ :type cons
44
+ :documentation "A list of REGEX objects."))
45
+ (:documentation "SEQ objects represents sequences of regexes.
46
+ \(Like \"ab\" is the sequence of \"a\" and \"b\".)"))
47
+
48
+ (defclass alternation (regex)
49
+ ((choices :initarg :choices
50
+ :accessor choices
51
+ :type cons
52
+ :documentation "A list of REGEX objects"))
53
+ (:documentation "ALTERNATION objects represent alternations of
54
+ regexes. \(Like \"a|b\" ist the alternation of \"a\" or \"b\".)"))
55
+
56
+ (defclass lookahead (regex)
57
+ ((regex :initarg :regex
58
+ :accessor regex
59
+ :documentation "The REGEX object we're checking.")
60
+ (positivep :initarg :positivep
61
+ :reader positivep
62
+ :documentation "Whether this assertion is positive."))
63
+ (:documentation "LOOKAHEAD objects represent look-ahead assertions."))
64
+
65
+ (defclass lookbehind (regex)
66
+ ((regex :initarg :regex
67
+ :accessor regex
68
+ :documentation "The REGEX object we're checking.")
69
+ (positivep :initarg :positivep
70
+ :reader positivep
71
+ :documentation "Whether this assertion is positive.")
72
+ (len :initarg :len
73
+ :accessor len
74
+ :type fixnum
75
+ :documentation "The \(fixed) length of the enclosed regex."))
76
+ (:documentation "LOOKBEHIND objects represent look-behind assertions."))
77
+
78
+ (defclass repetition (regex)
79
+ ((regex :initarg :regex
80
+ :accessor regex
81
+ :documentation "The REGEX that's repeated.")
82
+ (greedyp :initarg :greedyp
83
+ :reader greedyp
84
+ :documentation "Whether the repetition is greedy.")
85
+ (minimum :initarg :minimum
86
+ :accessor minimum
87
+ :type fixnum
88
+ :documentation "The minimal number of repetitions.")
89
+ (maximum :initarg :maximum
90
+ :accessor maximum
91
+ :documentation "The maximal number of repetitions.
92
+ Can be NIL for unbounded.")
93
+ (min-len :initarg :min-len
94
+ :reader min-len
95
+ :documentation "The minimal length of the enclosed regex.")
96
+ (len :initarg :len
97
+ :reader len
98
+ :documentation "The length of the enclosed regex. NIL if
99
+ unknown.")
100
+ (min-rest :initform 0
101
+ :accessor min-rest
102
+ :type fixnum
103
+ :documentation "The minimal number of characters which
104
+ must appear after this repetition.")
105
+ (contains-register-p :initarg :contains-register-p
106
+ :reader contains-register-p
107
+ :documentation "Whether the regex contains a
108
+ register."))
109
+ (:documentation "REPETITION objects represent repetitions of regexes."))
110
+
111
+ (defclass register (regex)
112
+ ((regex :initarg :regex
113
+ :accessor regex
114
+ :documentation "The inner regex.")
115
+ (num :initarg :num
116
+ :reader num
117
+ :type fixnum
118
+ :documentation "The number of this register, starting from 0.
119
+ This is the index into *REGS-START* and *REGS-END*.")
120
+ (name :initarg :name
121
+ :reader name
122
+ :documentation "Name of this register or NIL."))
123
+ (:documentation "REGISTER objects represent register groups."))
124
+
125
+ (defclass standalone (regex)
126
+ ((regex :initarg :regex
127
+ :accessor regex
128
+ :documentation "The inner regex."))
129
+ (:documentation "A standalone regular expression."))
130
+
131
+ (defclass back-reference (regex)
132
+ ((num :initarg :num
133
+ :accessor num
134
+ :type fixnum
135
+ :documentation "The number of the register this
136
+ reference refers to.")
137
+ (name :initarg :name
138
+ :accessor name
139
+ :documentation "The name of the register this
140
+ reference refers to or NIL.")
141
+ (case-insensitive-p :initarg :case-insensitive-p
142
+ :reader case-insensitive-p
143
+ :documentation "Whether we check
144
+ case-insensitively."))
145
+ (:documentation "BACK-REFERENCE objects represent backreferences."))
146
+
147
+ (defclass char-class (regex)
148
+ ((test-function :initarg :test-function
149
+ :reader test-function
150
+ :type (or function symbol nil)
151
+ :documentation "A unary function \(accepting a
152
+ character) which stands in for the character class and does the work
153
+ of checking whether a character belongs to the class."))
154
+ (:documentation "CHAR-CLASS objects represent character classes."))
155
+
156
+ (defclass str (regex)
157
+ ((str :initarg :str
158
+ :accessor str
159
+ :type string
160
+ :documentation "The actual string.")
161
+ (len :initform 0
162
+ :accessor len
163
+ :type fixnum
164
+ :documentation "The length of the string.")
165
+ (case-insensitive-p :initarg :case-insensitive-p
166
+ :reader case-insensitive-p
167
+ :documentation "If we match case-insensitively.")
168
+ (offset :initform nil
169
+ :accessor offset
170
+ :documentation "Offset from the left of the whole
171
+ parse tree. The first regex has offset 0. NIL if unknown, i.e. behind
172
+ a variable-length regex.")
173
+ (skip :initform nil
174
+ :initarg :skip
175
+ :accessor skip
176
+ :documentation "If we can avoid testing for this
177
+ string because the SCAN function has done this already.")
178
+ (start-of-end-string-p :initform nil
179
+ :accessor start-of-end-string-p
180
+ :documentation "If this is the unique
181
+ STR which starts END-STRING (a slot of MATCHER)."))
182
+ (:documentation "STR objects represent string."))
183
+
184
+ (defclass anchor (regex)
185
+ ((startp :initarg :startp
186
+ :reader startp
187
+ :documentation "Whether this is a \"start anchor\".")
188
+ (multi-line-p :initarg :multi-line-p
189
+ :initform nil
190
+ :reader multi-line-p
191
+ :documentation "Whether we're in multi-line mode,
192
+ i.e. whether each #\\Newline is surrounded by anchors.")
193
+ (no-newline-p :initarg :no-newline-p
194
+ :initform nil
195
+ :reader no-newline-p
196
+ :documentation "Whether we ignore #\\Newline at the end."))
197
+ (:documentation "ANCHOR objects represent anchors like \"^\" or \"$\"."))
198
+
199
+ (defclass everything (regex)
200
+ ((single-line-p :initarg :single-line-p
201
+ :reader single-line-p
202
+ :documentation "Whether we're in single-line mode,
203
+ i.e. whether we also match #\\Newline."))
204
+ (:documentation "EVERYTHING objects represent regexes matching
205
+ \"everything\", i.e. dots."))
206
+
207
+ (defclass word-boundary (regex)
208
+ ((negatedp :initarg :negatedp
209
+ :reader negatedp
210
+ :documentation "Whether we mean the opposite,
211
+ i.e. no word-boundary."))
212
+ (:documentation "WORD-BOUNDARY objects represent word-boundary assertions."))
213
+
214
+ (defclass branch (regex)
215
+ ((test :initarg :test
216
+ :accessor test
217
+ :documentation "The test of this branch, one of
218
+ LOOKAHEAD, LOOKBEHIND, or a number.")
219
+ (then-regex :initarg :then-regex
220
+ :accessor then-regex
221
+ :documentation "The regex that's to be matched if the
222
+ test succeeds.")
223
+ (else-regex :initarg :else-regex
224
+ :initform (make-instance 'void)
225
+ :accessor else-regex
226
+ :documentation "The regex that's to be matched if the
227
+ test fails."))
228
+ (:documentation "BRANCH objects represent Perl's conditional regular
229
+ expressions."))
230
+
231
+ (defclass filter (regex)
232
+ ((fn :initarg :fn
233
+ :accessor fn
234
+ :type (or function symbol)
235
+ :documentation "The user-defined function.")
236
+ (len :initarg :len
237
+ :reader len
238
+ :documentation "The fixed length of this filter or NIL."))
239
+ (:documentation "FILTER objects represent arbitrary functions
240
+ defined by the user."))
241
+
242
+ (defclass void (regex)
243
+ ()
244
+ (:documentation "VOID objects represent empty regular expressions."))
245
+
246
+ (defmethod initialize-instance :after ((str str) &rest init-args)
247
+ (declare #.*standard-optimize-settings*)
248
+ (declare (ignore init-args))
249
+ "Automatically computes the length of a STR after initialization."
250
+ (let ((str-slot (slot-value str 'str)))
251
+ (unless (typep str-slot
252
+ #-:lispworks 'simple-string
253
+ #+:lispworks 'lw:simple-text-string)
254
+ (setf (slot-value str 'str)
255
+ (coerce str-slot
256
+ #-:lispworks 'simple-string
257
+ #+:lispworks 'lw:simple-text-string))))
258
+ (setf (len str) (length (str str))))
259
+