clucumber 0.1.1 → 0.2.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 (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
+