gipper 0.0.1
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.
- data/.gitignore +7 -0
- data/PostInstall.txt +5 -0
- data/README.rdoc +49 -0
- data/Rakefile +69 -0
- data/VERSION.yml +4 -0
- data/docs/gift_reference.pdf +0 -0
- data/features/fixtures/matching.gift +9 -0
- data/features/fixtures/missing_word.gift +8 -0
- data/features/fixtures/multiple_choice.gift +41 -0
- data/features/fixtures/numerical.gift +10 -0
- data/features/fixtures/short_answer.gift +10 -0
- data/features/fixtures/super_gift.txt +169 -0
- data/features/fixtures/true_or_false.gift +19 -0
- data/features/gift_parsing.feature +10 -0
- data/features/parse_matching_questions.feature +10 -0
- data/features/parse_missing_word.feature +10 -0
- data/features/parse_multiple_choice_questions.feature +10 -0
- data/features/parse_numerical_questions.feature +10 -0
- data/features/parse_short_answer_questions.feature +10 -0
- data/features/parse_true_or_false_questions.feature +10 -0
- data/features/steps/gift_parsing_steps.rb +546 -0
- data/features/steps/parse_matching_steps.rb +30 -0
- data/features/steps/parse_missing_word_steps.rb +58 -0
- data/features/steps/parse_multiple_choice_steps.rb +107 -0
- data/features/steps/parse_numerical_steps.rb +35 -0
- data/features/steps/parse_short_answer_steps.rb +42 -0
- data/features/steps/parse_steps.rb +7 -0
- data/features/steps/parse_true_or_false_steps.rb +61 -0
- data/features/support/env.rb +10 -0
- data/lib/answer.rb +165 -0
- data/lib/answers.rb +99 -0
- data/lib/gipper.rb +15 -0
- data/lib/question.rb +53 -0
- data/lib/quiz.rb +31 -0
- data/lib/special_charater_handler.rb +8 -0
- data/script/txt2html +71 -0
- data/script/txt2html.cmd +1 -0
- data/tasks/rspec.rake +21 -0
- data/test/answer_test.rb +152 -0
- data/test/answers_test.rb +126 -0
- data/test/custom_assertions.rb +68 -0
- data/test/fixtures/begins_with_comment.txt +6 -0
- data/test/question_test.rb +86 -0
- data/test/quiz_test.rb +65 -0
- data/test/special_character_handler_test.rb +43 -0
- data/test/test_helper.rb +19 -0
- metadata +125 -0
@@ -0,0 +1,126 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class AnswersTest < Test::Unit::TestCase
|
4
|
+
def setup
|
5
|
+
@answers = Gipper::Answers.new
|
6
|
+
end
|
7
|
+
|
8
|
+
|
9
|
+
context "answer splitting" do
|
10
|
+
should "not split strings that do not contain answer delimiters" do
|
11
|
+
answers = @answers.send :split_apart, "this is a single answer"
|
12
|
+
assert_answers ["this is a single answer"], answers
|
13
|
+
end
|
14
|
+
|
15
|
+
should "split strings on twiddle" do
|
16
|
+
answers = @answers.send :split_apart, "~this ~answer has ~three parts"
|
17
|
+
assert_answers ["~this", "~answer has", "~three parts"], answers
|
18
|
+
end
|
19
|
+
|
20
|
+
should "split strings on equals" do
|
21
|
+
answers = @answers.send :split_apart, "=this =answer has =three parts"
|
22
|
+
assert_answers ["=this", "=answer has", "=three parts"], answers
|
23
|
+
end
|
24
|
+
|
25
|
+
should "split strings on equals and twiddles" do
|
26
|
+
answers = @answers.send :split_apart, "~this =answer has ~three parts"
|
27
|
+
assert_answers ["~this", "=answer has", "~three parts"], answers
|
28
|
+
end
|
29
|
+
|
30
|
+
should "not split strings on escaped equals and twiddles" do
|
31
|
+
answers = @answers.send :split_apart, "~this \\=answer has ~two parts"
|
32
|
+
assert_answers ["~this \\=answer has", "~two parts"], answers
|
33
|
+
end
|
34
|
+
|
35
|
+
should "split matching correctly" do
|
36
|
+
answers = @answers.send :split_apart, "=waffle -> cone =cheese -> cheddar"
|
37
|
+
assert_answers ["=waffle -> cone", "=cheese -> cheddar"], answers
|
38
|
+
end
|
39
|
+
|
40
|
+
should "be tolerant of input variance" do
|
41
|
+
answers = @answers.send :split_apart, " ~ %%%%%%% ~ UUUUUUUUU ~@@%^&* ~ 232323 = 2345 "
|
42
|
+
assert_answers ["~ %%%%%%%", "~ UUUUUUUUU", "~@@%^&*", "~ 232323", "= 2345"], answers
|
43
|
+
end
|
44
|
+
|
45
|
+
should "get answer conmments" do
|
46
|
+
answers = @answers.send :split_apart, " ~ %%%%%%%#foo = UUUUUUUUU #bar"
|
47
|
+
assert_answers ["~ %%%%%%%#foo", "= UUUUUUUUU #bar"], answers
|
48
|
+
end
|
49
|
+
|
50
|
+
should "get answer conmments when preceeded by a new line" do
|
51
|
+
answers = @answers.send :split_apart, "~ Oompa\r\n#kun\r\n = Loompa\r\n #pyakun"
|
52
|
+
assert_answers ["~ Oompa\r\n#kun", "= Loompa\r\n #pyakun"], answers
|
53
|
+
end
|
54
|
+
|
55
|
+
# If you want to use curly braces, { or }, or equal sign, =,
|
56
|
+
# or # or ~ in a GIFT file (for example in a math question including
|
57
|
+
# TeX expressions) you must "escape" them by preceding them with a \
|
58
|
+
# directly in front of each { or } or =.
|
59
|
+
should "ignore all escaped characters" do
|
60
|
+
answers = @answers.send :split_apart, "~ \\{\\}\\~\\=\\#foo =\\{\\}\\~\\=\\#bar"
|
61
|
+
assert_answers ["~ \\{\\}\\~\\=\\#foo", "=\\{\\}\\~\\=\\#bar"], answers
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
context "splitting numerical answers" do
|
66
|
+
setup do
|
67
|
+
@answers = Gipper::Answers.new
|
68
|
+
end
|
69
|
+
|
70
|
+
should "determine numerical by a leading pound" do
|
71
|
+
assert @answers.send :is_numerical?, "#333"
|
72
|
+
end
|
73
|
+
|
74
|
+
should "understand numerical answer format" do
|
75
|
+
result = @answers.send :split_apart, "2000:3"
|
76
|
+
assert_answers ["2000:3"], result
|
77
|
+
end
|
78
|
+
|
79
|
+
should "understand multiple numerical answer format" do
|
80
|
+
result = @answers.send :split_apart, "=2000:0 #Whoopdee do! =%50%2000:3 #Yippers"
|
81
|
+
assert_answers ["=2000:0 #Whoopdee do!", "=%50%2000:3 #Yippers"], result
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
context "when determining the answer style" do
|
86
|
+
should "return a style of true_false when it has one answer of true and no text" do
|
87
|
+
@answers.parse("T")
|
88
|
+
assert_equal :true_false, @answers.find_style
|
89
|
+
end
|
90
|
+
|
91
|
+
should "return a style of true_false when it has one answer of false and no text" do
|
92
|
+
@answers.parse("F")
|
93
|
+
assert_equal :true_false, @answers.find_style
|
94
|
+
end
|
95
|
+
|
96
|
+
should "return a style of multiple choice when it has more than one answer and text and only one answer is true" do
|
97
|
+
@answers.parse("~foo =bar")
|
98
|
+
assert_equal :multiple_choice, @answers.find_style
|
99
|
+
end
|
100
|
+
|
101
|
+
should "return a style of short answer when it has more than one answer and text and all answers are true" do
|
102
|
+
@answers.parse("=foo =bar")
|
103
|
+
assert_equal :short_answer, @answers.find_style
|
104
|
+
end
|
105
|
+
|
106
|
+
should "return a style of short answer when it has one true answer and text" do
|
107
|
+
@answers.parse("=foo")
|
108
|
+
assert_equal :short_answer, @answers.find_style
|
109
|
+
end
|
110
|
+
|
111
|
+
should "return a style of short answer when it has one true answer and text without equals" do
|
112
|
+
@answers.parse("5")
|
113
|
+
assert_equal :short_answer, @answers.find_style
|
114
|
+
end
|
115
|
+
|
116
|
+
should "return a style of matching when correct contains a string ->" do
|
117
|
+
@answers.parse("=foo -> bar")
|
118
|
+
assert_equal :matching, @answers.find_style
|
119
|
+
end
|
120
|
+
|
121
|
+
should "return a style of matching when correct contains a symbols ->" do
|
122
|
+
@answers.parse("=:) -> smiley")
|
123
|
+
assert_equal :matching, @answers.find_style
|
124
|
+
end
|
125
|
+
end
|
126
|
+
end
|
@@ -0,0 +1,68 @@
|
|
1
|
+
# To change this template, choose Tools | Templates
|
2
|
+
# and open the template in the editor.
|
3
|
+
|
4
|
+
module CustomAssertions
|
5
|
+
def assert_answers correct, results
|
6
|
+
assert_equal correct.length, results.length
|
7
|
+
correct.each_with_index do |s, i|
|
8
|
+
assert_equal s, results[i]
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
def assert_question question, expected={}
|
13
|
+
check_expected question, expected, :text_post
|
14
|
+
check_expected question, expected, :answer
|
15
|
+
check_expected question, expected, :title
|
16
|
+
check_expected question, expected, :text
|
17
|
+
check_expected question, expected, :style
|
18
|
+
check_expected question, expected, :format
|
19
|
+
end
|
20
|
+
|
21
|
+
def assert_answer answer, expected={}
|
22
|
+
check_expected answer, expected, :correct
|
23
|
+
check_expected answer, expected, :text
|
24
|
+
check_expected answer, expected, :comment
|
25
|
+
check_expected answer, expected, :range
|
26
|
+
check_expected answer, expected, :weight
|
27
|
+
end
|
28
|
+
|
29
|
+
def assert_false value
|
30
|
+
assert FalseClass, value.class
|
31
|
+
end
|
32
|
+
|
33
|
+
def assert_question_parsing text, expected={}
|
34
|
+
question = Gipper::Question.new
|
35
|
+
|
36
|
+
question.parse text
|
37
|
+
|
38
|
+
assert_question question, expected
|
39
|
+
end
|
40
|
+
|
41
|
+
def assert_answer_parsing text, expected={}
|
42
|
+
answer = Gipper::Answer.new
|
43
|
+
|
44
|
+
if expected[:numerical]
|
45
|
+
answer.parse text, :numerical
|
46
|
+
else
|
47
|
+
answer.parse text
|
48
|
+
end
|
49
|
+
|
50
|
+
assert_answer answer, expected
|
51
|
+
end
|
52
|
+
|
53
|
+
def check_expected obj, expected, key
|
54
|
+
if expected.has_key? key
|
55
|
+
actual = (obj.send key.to_s)
|
56
|
+
if expected[key].nil?
|
57
|
+
assert_nil actual, "key #{key.to_s} expected to be nil got #{actual}"
|
58
|
+
else
|
59
|
+
if actual.class == Float
|
60
|
+
assert_in_delta expected[key], actual, 0.00001, "key #{key.to_s} expected #{expected[key]} got #{actual} with tolerence of .00001"
|
61
|
+
else
|
62
|
+
assert_equal expected[key], actual, "key #{key.to_s} expected #{expected[key]} got #{actual}"
|
63
|
+
end
|
64
|
+
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
@@ -0,0 +1,86 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class QuestionTest < Test::Unit::TestCase
|
4
|
+
def setup
|
5
|
+
@q = Gipper::Question.new
|
6
|
+
end
|
7
|
+
|
8
|
+
context "(when passed a single question without comments or title)" do
|
9
|
+
|
10
|
+
setup do
|
11
|
+
@single_question = "wubble."
|
12
|
+
@single_answer = "{=:) -> smiley}"
|
13
|
+
single_input = @single_question + @single_answer
|
14
|
+
|
15
|
+
@q.parse(single_input)
|
16
|
+
end
|
17
|
+
|
18
|
+
should "return the question" do
|
19
|
+
assert_equal "wubble.", @q.text
|
20
|
+
end
|
21
|
+
|
22
|
+
should "return the answer" do
|
23
|
+
assert_equal "smiley", @q.answer[0].correct
|
24
|
+
end
|
25
|
+
|
26
|
+
should "return the answer match" do
|
27
|
+
assert_equal ":)", @q.answer[0].text
|
28
|
+
end
|
29
|
+
|
30
|
+
should "return the style" do
|
31
|
+
assert_equal :matching, @q.style
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
context "(when passed a single question with title but without comments)" do
|
36
|
+
|
37
|
+
setup do
|
38
|
+
@single_title = "SuperTitle"
|
39
|
+
@single_question = "Titles are bad."
|
40
|
+
@single_answer = "{F}"
|
41
|
+
single_input = "::#{@single_title}::#{@single_question}#{@single_answer}"
|
42
|
+
|
43
|
+
@q.parse(single_input)
|
44
|
+
end
|
45
|
+
|
46
|
+
should "return the question" do
|
47
|
+
assert_equal @single_question, @q.text
|
48
|
+
end
|
49
|
+
|
50
|
+
should "return the answer" do
|
51
|
+
assert_false @q.answer[0].correct
|
52
|
+
end
|
53
|
+
|
54
|
+
should "return the style" do
|
55
|
+
assert_equal :true_false, @q.style
|
56
|
+
end
|
57
|
+
|
58
|
+
should "return the title" do
|
59
|
+
assert_equal @single_title, @q.title
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
context "when passed a question with escaped brackets" do
|
64
|
+
should "ignore the brackets" do
|
65
|
+
assert_question_parsing ' foo \\{escaped bracketed text\\}{T}',
|
66
|
+
:text => "foo {escaped bracketed text}",
|
67
|
+
:style => :true_false
|
68
|
+
end
|
69
|
+
|
70
|
+
|
71
|
+
should "handle all kinds of escaped stuff" do
|
72
|
+
assert_question_parsing ' my crazy \\#\\~\\= question \\{escaped bracketed text\\}{=\\=\\#\\~foo#hi-yah}',
|
73
|
+
:text => "my crazy #~= question {escaped bracketed text}",
|
74
|
+
:style => :short_answer
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
context "when determining the answer style" do
|
79
|
+
should "return missing word when question_post is present" do
|
80
|
+
assert_question_parsing "foo {=bar ~baz} cheese.",
|
81
|
+
:text => "foo",
|
82
|
+
:text_post => "cheese.",
|
83
|
+
:style => :missing_word
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
data/test/quiz_test.rb
ADDED
@@ -0,0 +1,65 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class QuizTest < Test::Unit::TestCase
|
4
|
+
context "simple question" do
|
5
|
+
setup do
|
6
|
+
@single_question = "This is a really lame question"
|
7
|
+
@single_answer = "{T}"
|
8
|
+
end
|
9
|
+
|
10
|
+
should "remove commented lines before parsing" do
|
11
|
+
file = File.open(File.join(File.dirname(__FILE__), *%w[fixtures begins_with_comment.txt]))
|
12
|
+
Gipper::Quiz.new.iterate_through file.read do |q|
|
13
|
+
assert_equal "1=1{T}", q
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
should "return just a question mark for question_post when question_post is just a question mark" do
|
19
|
+
quiz = Gipper::Quiz.parse 'You say that, "money is the root of all evil", I ask you "what is the root of all {~honey ~bunnies =money}?"'
|
20
|
+
assert_equal 'You say that, "money is the root of all evil", I ask you "what is the root of all', quiz[0].text
|
21
|
+
assert_equal '?"', quiz[0].text_post
|
22
|
+
|
23
|
+
answers = quiz[0].answer
|
24
|
+
assert_false answers[0].correct
|
25
|
+
assert_equal "honey", answers[0].text
|
26
|
+
assert_false answers[1].correct
|
27
|
+
assert_equal "bunnies", answers[1].text
|
28
|
+
assert answers[2].correct
|
29
|
+
assert_equal "money", answers[2].text
|
30
|
+
end
|
31
|
+
|
32
|
+
context "(when passed an empty string)" do
|
33
|
+
should "should return an empty array" do
|
34
|
+
quiz = Gipper::Quiz.parse("")
|
35
|
+
assert_equal [], quiz
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
context "(when passed more than one question)" do
|
40
|
+
should "should return an array with questions" do
|
41
|
+
q = []
|
42
|
+
q << true_false_question("Weather Patterns in the Pacific Northwest", "Seattle is rainy.", "{T}")
|
43
|
+
q << true_false_question("", "Seattle has lots of water.", "{T}")
|
44
|
+
q << true_false_question("Accessories in the Pacific Northwest", "People in Seattle use umbrellas:", "{T}")
|
45
|
+
|
46
|
+
multiple_input = "//opening comment\r\n//another comment\r\n\r\n\r\n#{q[0]}\r\n//this is a \r\n//couple rows of comments\r\n\r\n#{q[1]}\r\n\r\n#{q[2]}"
|
47
|
+
|
48
|
+
Gipper::Quiz.new.iterate_through(multiple_input) do |qu|
|
49
|
+
assert q.include?(qu)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
should "ignore whitespace between questions" do
|
54
|
+
quiz = "a\r\n\t\r\nb\r\n \r\nc\r\n\r\nd"
|
55
|
+
count = 0
|
56
|
+
|
57
|
+
Gipper::Quiz.new.iterate_through(quiz) do |qu|
|
58
|
+
expected = ['a', 'b', 'c', 'd']
|
59
|
+
assert_equal expected[count], qu
|
60
|
+
count = count + 1
|
61
|
+
end
|
62
|
+
assert_equal 4, count
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class SpecialCharacterHandlerTest < Test::Unit::TestCase
|
4
|
+
include Gipper::SpecialCharacterHandler
|
5
|
+
|
6
|
+
context "striping escapes" do
|
7
|
+
should "leave normal text alone" do
|
8
|
+
result = unescape("This is some normal text.")
|
9
|
+
assert_equal "This is some normal text.", result
|
10
|
+
end
|
11
|
+
|
12
|
+
#(~|=|#|\{|\})
|
13
|
+
should "remove escape from escaped twiddles" do
|
14
|
+
result = unescape("This is some twiddled \\~ text.")
|
15
|
+
assert_equal "This is some twiddled ~ text.", result
|
16
|
+
end
|
17
|
+
|
18
|
+
should "remove escape from escaped equals" do
|
19
|
+
result = unescape("This is some equaled \\= text.")
|
20
|
+
assert_equal "This is some equaled = text.", result
|
21
|
+
end
|
22
|
+
|
23
|
+
should "remove escape from escaped pounded" do
|
24
|
+
result = unescape("This is some pounded \\# text.")
|
25
|
+
assert_equal "This is some pounded # text.", result
|
26
|
+
end
|
27
|
+
|
28
|
+
should "remove escape from escaped left brackets" do
|
29
|
+
result = unescape("This is some left bracketed \\{ text.")
|
30
|
+
assert_equal "This is some left bracketed { text.", result
|
31
|
+
end
|
32
|
+
|
33
|
+
should "remove escape from escaped right brackets" do
|
34
|
+
result = unescape("This is some right bracketed \\} text.")
|
35
|
+
assert_equal "This is some right bracketed } text.", result
|
36
|
+
end
|
37
|
+
|
38
|
+
should "not remove escapes from other characters" do
|
39
|
+
result = unescape("\\This \\is \\some \\normal \\text\\.")
|
40
|
+
assert_equal "\\This \\is \\some \\normal \\text\\.", result
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'test/unit'
|
3
|
+
require 'shoulda'
|
4
|
+
|
5
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
6
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
7
|
+
require 'custom_assertions'
|
8
|
+
require 'gipper'
|
9
|
+
|
10
|
+
class Test::Unit::TestCase
|
11
|
+
include CustomAssertions
|
12
|
+
def true_false_question title, question, answer
|
13
|
+
if title
|
14
|
+
"::#{title}::#{question}#{answer}"
|
15
|
+
else
|
16
|
+
"#{question}#{answer}"
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
metadata
ADDED
@@ -0,0 +1,125 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: gipper
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Jamal Hansen
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2009-12-22 00:00:00 -06:00
|
13
|
+
default_executable:
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: oniguruma
|
17
|
+
type: :runtime
|
18
|
+
version_requirement:
|
19
|
+
version_requirements: !ruby/object:Gem::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">="
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: "0"
|
24
|
+
version:
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: technicalpickles-shoulda
|
27
|
+
type: :development
|
28
|
+
version_requirement:
|
29
|
+
version_requirements: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: "0"
|
34
|
+
version:
|
35
|
+
description:
|
36
|
+
email: jamal.hansen@gmail.com
|
37
|
+
executables: []
|
38
|
+
|
39
|
+
extensions: []
|
40
|
+
|
41
|
+
extra_rdoc_files:
|
42
|
+
- README.rdoc
|
43
|
+
files:
|
44
|
+
- .gitignore
|
45
|
+
- PostInstall.txt
|
46
|
+
- README.rdoc
|
47
|
+
- Rakefile
|
48
|
+
- VERSION.yml
|
49
|
+
- docs/gift_reference.pdf
|
50
|
+
- features/fixtures/matching.gift
|
51
|
+
- features/fixtures/missing_word.gift
|
52
|
+
- features/fixtures/multiple_choice.gift
|
53
|
+
- features/fixtures/numerical.gift
|
54
|
+
- features/fixtures/short_answer.gift
|
55
|
+
- features/fixtures/super_gift.txt
|
56
|
+
- features/fixtures/true_or_false.gift
|
57
|
+
- features/gift_parsing.feature
|
58
|
+
- features/parse_matching_questions.feature
|
59
|
+
- features/parse_missing_word.feature
|
60
|
+
- features/parse_multiple_choice_questions.feature
|
61
|
+
- features/parse_numerical_questions.feature
|
62
|
+
- features/parse_short_answer_questions.feature
|
63
|
+
- features/parse_true_or_false_questions.feature
|
64
|
+
- features/steps/gift_parsing_steps.rb
|
65
|
+
- features/steps/parse_matching_steps.rb
|
66
|
+
- features/steps/parse_missing_word_steps.rb
|
67
|
+
- features/steps/parse_multiple_choice_steps.rb
|
68
|
+
- features/steps/parse_numerical_steps.rb
|
69
|
+
- features/steps/parse_short_answer_steps.rb
|
70
|
+
- features/steps/parse_steps.rb
|
71
|
+
- features/steps/parse_true_or_false_steps.rb
|
72
|
+
- features/support/env.rb
|
73
|
+
- lib/answer.rb
|
74
|
+
- lib/answers.rb
|
75
|
+
- lib/gipper.rb
|
76
|
+
- lib/question.rb
|
77
|
+
- lib/quiz.rb
|
78
|
+
- lib/special_charater_handler.rb
|
79
|
+
- script/txt2html
|
80
|
+
- script/txt2html.cmd
|
81
|
+
- tasks/rspec.rake
|
82
|
+
- test/answer_test.rb
|
83
|
+
- test/answers_test.rb
|
84
|
+
- test/custom_assertions.rb
|
85
|
+
- test/fixtures/begins_with_comment.txt
|
86
|
+
- test/question_test.rb
|
87
|
+
- test/quiz_test.rb
|
88
|
+
- test/special_character_handler_test.rb
|
89
|
+
- test/test_helper.rb
|
90
|
+
has_rdoc: true
|
91
|
+
homepage: http://github.com/rubyyot/gipper
|
92
|
+
licenses: []
|
93
|
+
|
94
|
+
post_install_message:
|
95
|
+
rdoc_options:
|
96
|
+
- --charset=UTF-8
|
97
|
+
require_paths:
|
98
|
+
- lib
|
99
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: "0"
|
104
|
+
version:
|
105
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
106
|
+
requirements:
|
107
|
+
- - ">="
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: "0"
|
110
|
+
version:
|
111
|
+
requirements: []
|
112
|
+
|
113
|
+
rubyforge_project: gipper
|
114
|
+
rubygems_version: 1.3.5
|
115
|
+
signing_key:
|
116
|
+
specification_version: 3
|
117
|
+
summary: A gem for parsing the GIFT quiz file format
|
118
|
+
test_files:
|
119
|
+
- test/custom_assertions.rb
|
120
|
+
- test/quiz_test.rb
|
121
|
+
- test/question_test.rb
|
122
|
+
- test/test_helper.rb
|
123
|
+
- test/answer_test.rb
|
124
|
+
- test/special_character_handler_test.rb
|
125
|
+
- test/answers_test.rb
|