marmalade 0.0.1 → 0.0.2
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/README.md +96 -18
- data/bin/jam +14 -0
- data/examples/reverse-words/B-small-practice.in +6 -0
- data/examples/reverse-words/README.md +4 -0
- data/examples/reverse-words/reverse-words.rb +14 -0
- data/examples/rope-intranet/A-large-practice.in +12614 -0
- data/examples/rope-intranet/A-small-practice.in +43 -0
- data/examples/rope-intranet/README.md +3 -0
- data/examples/rope-intranet/rope-intranet.rb +34 -0
- data/lib/marmalade/project_builder.rb +28 -0
- data/lib/marmalade/puzzle.rb +21 -3
- data/lib/marmalade/version.rb +1 -1
- data/lib/marmalade.rb +16 -4
- data/spec/marmalade/marmalade_spec.rb +7 -0
- data/spec/marmalade/project_builder_spec.rb +47 -0
- data/spec/marmalade/puzzle_spec.rb +59 -16
- data/templates/Rakefile +27 -0
- data/templates/main.rb +14 -0
- data/templates/main_spec.rb +5 -0
- metadata +72 -75
@@ -0,0 +1,43 @@
|
|
1
|
+
15
|
2
|
+
2
|
3
|
+
1 1
|
4
|
+
2 2
|
5
|
+
1
|
6
|
+
1 9
|
7
|
+
2
|
8
|
+
5 3
|
9
|
+
6 4
|
10
|
+
2
|
11
|
+
4 10
|
12
|
+
6 2
|
13
|
+
2
|
14
|
+
5 8
|
15
|
+
8 4
|
16
|
+
1
|
17
|
+
263 96
|
18
|
+
2
|
19
|
+
482 213
|
20
|
+
481 212
|
21
|
+
2
|
22
|
+
242 321
|
23
|
+
376 144
|
24
|
+
2
|
25
|
+
389 448
|
26
|
+
25 153
|
27
|
+
2
|
28
|
+
261 4
|
29
|
+
383 193
|
30
|
+
1
|
31
|
+
224 9746
|
32
|
+
2
|
33
|
+
6150 4479
|
34
|
+
6151 4480
|
35
|
+
2
|
36
|
+
1603 8126
|
37
|
+
2388 5863
|
38
|
+
2
|
39
|
+
5654 961
|
40
|
+
7939 2636
|
41
|
+
2
|
42
|
+
5731 1199
|
43
|
+
2376 4556
|
@@ -0,0 +1,34 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'rubygems'
|
4
|
+
require 'marmalade'
|
5
|
+
|
6
|
+
def intersect?(segment_a, segment_b)
|
7
|
+
# They intersect if only one side is higher than the other
|
8
|
+
(segment_a[0] - segment_b[0]) * (segment_a[1] - segment_b[1]) < 0
|
9
|
+
end
|
10
|
+
|
11
|
+
# Brute force check all wires
|
12
|
+
def count_intersections(wires)
|
13
|
+
intersections = 0
|
14
|
+
wires.length.times do
|
15
|
+
wire = wires.pop
|
16
|
+
puts_dbg "Wire: #{wire.inspect}"
|
17
|
+
wires.each do |other_wire|
|
18
|
+
puts_dbg "Other wire: #{other_wire.inspect}"
|
19
|
+
intersections += intersect?(wire, other_wire) ? 1 : 0
|
20
|
+
end
|
21
|
+
end
|
22
|
+
intersections
|
23
|
+
end
|
24
|
+
|
25
|
+
Marmalade.jam do
|
26
|
+
read_num_cases
|
27
|
+
test_cases do
|
28
|
+
read :wire_count, :type => :int
|
29
|
+
read :wires, :count => @wire_count, :type => :int, :split => true
|
30
|
+
run_case do
|
31
|
+
puts count_intersections(@wires)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
|
3
|
+
# Builds a project scaffolding
|
4
|
+
# TODO: Currently Ruby 1.9-only -- make this work with 1.8
|
5
|
+
class ProjectBuilder
|
6
|
+
|
7
|
+
def create(project_name)
|
8
|
+
template_path = File.join(File.expand_path('../../../', __FILE__), 'templates')
|
9
|
+
|
10
|
+
# Create project directory
|
11
|
+
puts "Creating directory #{project_name}"
|
12
|
+
Dir.mkdir(project_name)
|
13
|
+
|
14
|
+
# Copy all template files into it
|
15
|
+
main_file = File.join(project_name, "#{project_name}.rb")
|
16
|
+
copy_file(File.join(template_path, 'main.rb'), main_file)
|
17
|
+
copy_file(File.join(template_path, 'main_spec.rb'), File.join(project_name, "#{project_name}_spec.rb"))
|
18
|
+
copy_file(File.join(template_path, 'Rakefile'), File.join(project_name, 'Rakefile'))
|
19
|
+
end
|
20
|
+
|
21
|
+
private
|
22
|
+
|
23
|
+
def copy_file(from, to)
|
24
|
+
puts "Creating #{to}"
|
25
|
+
FileUtils.copy(from, to)
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
data/lib/marmalade/puzzle.rb
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
# TODO: RDoc this
|
2
|
+
# TODO: read_array
|
3
|
+
# TODO: read_integer_array
|
4
|
+
# TODO: read_values
|
5
|
+
|
1
6
|
module Marmalade
|
2
7
|
class Puzzle
|
3
8
|
attr_accessor :reader
|
@@ -9,7 +14,9 @@ module Marmalade
|
|
9
14
|
end
|
10
15
|
|
11
16
|
def read(assignments, options = {})
|
12
|
-
|
17
|
+
if @running_case
|
18
|
+
raise MarmaladeError.new("Cannot call read while in a run_case block")
|
19
|
+
end
|
13
20
|
options = @options.merge(options)
|
14
21
|
assigns = reader.read(assignments, options)
|
15
22
|
assigns.each do |k, v|
|
@@ -17,8 +24,14 @@ module Marmalade
|
|
17
24
|
end
|
18
25
|
end
|
19
26
|
|
27
|
+
def read_num_cases
|
28
|
+
read :num_cases, :type => :int
|
29
|
+
end
|
30
|
+
|
20
31
|
def test_cases(options = {}, &block)
|
21
|
-
|
32
|
+
unless @num_cases.is_a?(Fixnum)
|
33
|
+
raise MarmaladeError.new("@num_cases has not been set or is not an integer")
|
34
|
+
end
|
22
35
|
options = options.merge(@options)
|
23
36
|
1.upto(@num_cases) do |case_num|
|
24
37
|
@case_num = case_num
|
@@ -29,9 +42,11 @@ module Marmalade
|
|
29
42
|
end
|
30
43
|
|
31
44
|
def run_case(&block)
|
45
|
+
@running_case = true
|
32
46
|
if @options[:case].nil? || @options[:case] == @case_num
|
33
47
|
instance_eval(&block)
|
34
48
|
end
|
49
|
+
@running_case = false
|
35
50
|
end
|
36
51
|
|
37
52
|
def puts(*args)
|
@@ -45,7 +60,10 @@ module Marmalade
|
|
45
60
|
private
|
46
61
|
|
47
62
|
def puts_with_case(*args)
|
48
|
-
|
63
|
+
unless @case_num.nil?
|
64
|
+
print "Case ##{@case_num}: "
|
65
|
+
end
|
66
|
+
print *args
|
49
67
|
print "\n"
|
50
68
|
end
|
51
69
|
end
|
data/lib/marmalade/version.rb
CHANGED
data/lib/marmalade.rb
CHANGED
@@ -1,18 +1,30 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
require 'trollop'
|
3
3
|
|
4
|
+
require 'marmalade/project_builder'
|
4
5
|
require 'marmalade/file_reader'
|
5
6
|
require 'marmalade/puzzle'
|
6
7
|
require 'marmalade/version'
|
7
8
|
|
9
|
+
# A class to use for throwing error internally.
|
10
|
+
class MarmaladeError < Exception; end
|
11
|
+
|
8
12
|
module Marmalade
|
9
13
|
|
10
14
|
def self.jam(options = {}, &block)
|
11
15
|
options = parse_options.merge(options)
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
+
begin
|
17
|
+
file_name = options[:file]
|
18
|
+
unless File.exist?(file_name)
|
19
|
+
raise MarmaladeError.new("Cannot find input file #{file_name}")
|
20
|
+
end
|
21
|
+
File.open(options[:file], 'r') do |file|
|
22
|
+
reader = FileReader.new(file)
|
23
|
+
puzzle = Puzzle.new(reader, options)
|
24
|
+
puzzle.instance_eval(&block)
|
25
|
+
end
|
26
|
+
rescue MarmaladeError => e
|
27
|
+
puts "** Error: #{e.message}"
|
16
28
|
end
|
17
29
|
end
|
18
30
|
|
@@ -18,4 +18,11 @@ describe Marmalade do
|
|
18
18
|
2 => { :dummy => 9, :lines => ['a', 'b', 'c', 'd'] },
|
19
19
|
3 => { :dummy => 3, :lines => ['hello world'] } }
|
20
20
|
end
|
21
|
+
|
22
|
+
it "will throw an error if the input file does not exist" do
|
23
|
+
Marmalade.expects(:puts).with("** Error: Cannot find input file nothing.txt")
|
24
|
+
ran = false
|
25
|
+
Marmalade.jam(:file => 'nothing.txt') { ran = true }
|
26
|
+
ran.should be_false
|
27
|
+
end
|
21
28
|
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe ProjectBuilder do
|
4
|
+
|
5
|
+
TEMP_DIR = '/tmp'
|
6
|
+
PROJ_NAME = 'foo'
|
7
|
+
PROJ_PATH = File.join(TEMP_DIR, PROJ_NAME)
|
8
|
+
|
9
|
+
before do
|
10
|
+
clean_project_dir
|
11
|
+
@builder = ProjectBuilder.new
|
12
|
+
# Stub out puts so we don't get any output when we run tests
|
13
|
+
@builder.stubs(:puts)
|
14
|
+
Dir.chdir(TEMP_DIR) do
|
15
|
+
@builder.create(PROJ_NAME)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
after do
|
20
|
+
clean_project_dir
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should create the project path" do
|
24
|
+
File.exist?(PROJ_PATH).should be_true
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should create a main Ruby file with the name of the project" do
|
28
|
+
project_file_exists?("#{PROJ_NAME}.rb").should be_true
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should create a spec file with the name of the project" do
|
32
|
+
project_file_exists?("#{PROJ_NAME}_spec.rb").should be_true
|
33
|
+
end
|
34
|
+
|
35
|
+
it "should create a Rakefile" do
|
36
|
+
project_file_exists?("Rakefile").should be_true
|
37
|
+
end
|
38
|
+
|
39
|
+
def project_file_exists?(file_name)
|
40
|
+
File.exist?(File.join(PROJ_PATH, file_name))
|
41
|
+
end
|
42
|
+
|
43
|
+
def clean_project_dir
|
44
|
+
FileUtils.rm_rf(PROJ_PATH)
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
@@ -3,19 +3,43 @@ require 'spec_helper'
|
|
3
3
|
describe Marmalade::Puzzle do
|
4
4
|
|
5
5
|
describe "#read" do
|
6
|
+
before do
|
7
|
+
@reader = mock()
|
8
|
+
@puzzle = Marmalade::Puzzle.new(@reader)
|
9
|
+
end
|
10
|
+
|
6
11
|
it "will pass the options to the reader and assign instance varialbes based on the results" do
|
7
|
-
reader
|
8
|
-
|
9
|
-
puzzle
|
10
|
-
puzzle.read([:foo, :bar], :b => 2)
|
11
|
-
puzzle.instance_eval do
|
12
|
+
@reader.expects(:read).with([:foo, :bar], { :a => 1 }).returns({:foo => "a", :bar => 2})
|
13
|
+
@puzzle.read([:foo, :bar], :a => 1)
|
14
|
+
@puzzle.instance_eval do
|
12
15
|
@foo.should == 'a'
|
13
16
|
@bar.should == 2
|
14
17
|
end
|
15
18
|
end
|
19
|
+
|
20
|
+
it "will read in the number of cases with read_num_cases" do
|
21
|
+
@reader.expects(:read).with(:num_cases, :type => :int).returns({:num_cases => 1234})
|
22
|
+
@puzzle.read_num_cases
|
23
|
+
@puzzle.instance_eval do
|
24
|
+
@num_cases.should == 1234
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
it "will raise an error if it is called in a run_case block" do
|
29
|
+
expect do
|
30
|
+
@puzzle.run_case do
|
31
|
+
read :foo
|
32
|
+
end
|
33
|
+
end.to raise_error(MarmaladeError, /Cannot call read while in a run_case block/)
|
34
|
+
end
|
35
|
+
|
16
36
|
end
|
17
37
|
|
18
38
|
describe "#test_cases" do
|
39
|
+
before do
|
40
|
+
@puzzle = Marmalade::Puzzle.new(mock('reader'))
|
41
|
+
end
|
42
|
+
|
19
43
|
it "will run through all the test cases" do
|
20
44
|
run_test_cases.should == [1, 2, 3]
|
21
45
|
end
|
@@ -29,13 +53,16 @@ describe Marmalade::Puzzle do
|
|
29
53
|
run_test_cases(:step => true)
|
30
54
|
end
|
31
55
|
|
56
|
+
it "will raise an error if num_cases hasn't been set" do
|
57
|
+
expect { @puzzle.test_cases }.to raise_error(MarmaladeError, /has not been set/)
|
58
|
+
end
|
59
|
+
|
32
60
|
def run_test_cases(options = {})
|
33
|
-
puzzle
|
34
|
-
puzzle.instance_eval do
|
61
|
+
@puzzle.instance_eval do
|
35
62
|
@num_cases = 3
|
36
63
|
end
|
37
64
|
case_numbers = []
|
38
|
-
puzzle.test_cases(options) do
|
65
|
+
@puzzle.test_cases(options) do
|
39
66
|
case_numbers << @case_num
|
40
67
|
end
|
41
68
|
case_numbers
|
@@ -48,28 +75,43 @@ describe Marmalade::Puzzle do
|
|
48
75
|
end
|
49
76
|
|
50
77
|
it "will evaluate the given block if no case options are specified" do
|
78
|
+
value = nil
|
79
|
+
build_puzzle(3).run_case do
|
80
|
+
value = 'foo'
|
81
|
+
end
|
82
|
+
value.should == 'foo'
|
83
|
+
end
|
84
|
+
|
85
|
+
it "will set @running_case to true while in the block" do
|
86
|
+
running = false
|
51
87
|
build_puzzle(3).run_case do
|
52
|
-
|
53
|
-
end
|
88
|
+
running = @running_case
|
89
|
+
end
|
90
|
+
running.should be_true
|
54
91
|
end
|
55
92
|
|
56
93
|
it "will evaluate the block if the given case and the current case match" do
|
94
|
+
value = nil
|
57
95
|
build_puzzle(3, :case => 3).run_case do
|
58
|
-
'foo'
|
59
|
-
end
|
96
|
+
value = 'foo'
|
97
|
+
end
|
98
|
+
value.should == 'foo'
|
60
99
|
end
|
61
100
|
|
62
101
|
it "will not evalulate the block if the case numbers don't match" do
|
102
|
+
value = nil
|
63
103
|
build_puzzle(3, :case => 4).run_case do
|
64
|
-
'foo'
|
65
|
-
end
|
104
|
+
value = 'foo'
|
105
|
+
end
|
106
|
+
value.should be_nil
|
66
107
|
end
|
67
108
|
end
|
68
109
|
|
69
110
|
describe "#puts" do
|
70
111
|
it "will print the message along with the current case number" do
|
71
112
|
puzzle = build_puzzle(4)
|
72
|
-
puzzle.expects(:print).with("Case #4: "
|
113
|
+
puzzle.expects(:print).with("Case #4: ")
|
114
|
+
puzzle.expects(:print).with("hello")
|
73
115
|
puzzle.expects(:print).with("\n")
|
74
116
|
puzzle.puts("hello")
|
75
117
|
end
|
@@ -78,7 +120,8 @@ describe Marmalade::Puzzle do
|
|
78
120
|
describe "#puts_dbg" do
|
79
121
|
it "will print the message with the case number if in debug mode" do
|
80
122
|
puzzle = build_puzzle(4, :debug => true)
|
81
|
-
puzzle.expects(:print).with("Case #4: "
|
123
|
+
puzzle.expects(:print).with("Case #4: ")
|
124
|
+
puzzle.expects(:print).with("hello")
|
82
125
|
puzzle.expects(:print).with("\n")
|
83
126
|
puzzle.puts_dbg('hello')
|
84
127
|
end
|
data/templates/Rakefile
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rake'
|
3
|
+
|
4
|
+
begin
|
5
|
+
require 'rspec'
|
6
|
+
require 'rspec/core/rake_task'
|
7
|
+
|
8
|
+
desc 'Default: run the specs'
|
9
|
+
task :default => 'spec'
|
10
|
+
|
11
|
+
desc "Run specs"
|
12
|
+
RSpec::Core::RakeTask.new('spec') do |t|
|
13
|
+
t.pattern = '*_spec.rb'
|
14
|
+
end
|
15
|
+
rescue LoadError
|
16
|
+
# Nothing to see here...
|
17
|
+
end
|
18
|
+
|
19
|
+
desc "Package up source code"
|
20
|
+
task :package do |t|
|
21
|
+
# TODO: Make this Windows-friendly
|
22
|
+
project_name = `basename $(pwd)`.chomp
|
23
|
+
system "mkdir #{project_name}"
|
24
|
+
system "cp #{project_name}.rb #{project_name}"
|
25
|
+
system "tar czvf #{project_name}.tgz #{project_name}"
|
26
|
+
system "rm -rf #{project_name}"
|
27
|
+
end
|
data/templates/main.rb
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'rubygems'
|
4
|
+
require 'marmalade'
|
5
|
+
|
6
|
+
Marmalade.jam do
|
7
|
+
# This assumes your input file has the number of test cases as the first line.
|
8
|
+
# Remove the call to read_num_cases this if that is not so.
|
9
|
+
read_num_cases
|
10
|
+
|
11
|
+
test_cases do
|
12
|
+
# Test case-specific code goes here
|
13
|
+
end
|
14
|
+
end
|
metadata
CHANGED
@@ -1,132 +1,129 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: marmalade
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 0
|
9
|
-
- 1
|
10
|
-
version: 0.0.1
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Rusty Geldmacher
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2012-03-31 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
21
15
|
name: trollop
|
22
|
-
|
23
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
24
17
|
none: false
|
25
|
-
requirements:
|
18
|
+
requirements:
|
26
19
|
- - ~>
|
27
|
-
- !ruby/object:Gem::Version
|
28
|
-
hash: 83
|
29
|
-
segments:
|
30
|
-
- 1
|
31
|
-
- 16
|
32
|
-
- 2
|
20
|
+
- !ruby/object:Gem::Version
|
33
21
|
version: 1.16.2
|
34
22
|
type: :runtime
|
35
|
-
version_requirements: *id001
|
36
|
-
- !ruby/object:Gem::Dependency
|
37
|
-
name: rspec
|
38
23
|
prerelease: false
|
39
|
-
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 1.16.2
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: rspec
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
40
33
|
none: false
|
41
|
-
requirements:
|
34
|
+
requirements:
|
42
35
|
- - ~>
|
43
|
-
- !ruby/object:Gem::Version
|
44
|
-
hash: 43
|
45
|
-
segments:
|
46
|
-
- 2
|
47
|
-
- 9
|
48
|
-
- 0
|
36
|
+
- !ruby/object:Gem::Version
|
49
37
|
version: 2.9.0
|
50
38
|
type: :development
|
51
|
-
version_requirements: *id002
|
52
|
-
- !ruby/object:Gem::Dependency
|
53
|
-
name: mocha
|
54
39
|
prerelease: false
|
55
|
-
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
56
41
|
none: false
|
57
|
-
requirements:
|
42
|
+
requirements:
|
58
43
|
- - ~>
|
59
|
-
- !ruby/object:Gem::Version
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 2.9.0
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: mocha
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ~>
|
52
|
+
- !ruby/object:Gem::Version
|
65
53
|
version: 0.10.5
|
66
54
|
type: :development
|
67
|
-
|
68
|
-
|
69
|
-
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 0.10.5
|
62
|
+
description: Marmalade gives you ready-to-go parsing and other helpers for Google
|
63
|
+
Code Jam puzzles
|
64
|
+
email:
|
70
65
|
- russell.geldmacher@gmail.com
|
71
|
-
executables:
|
72
|
-
|
66
|
+
executables:
|
67
|
+
- jam
|
73
68
|
extensions: []
|
74
|
-
|
75
69
|
extra_rdoc_files: []
|
76
|
-
|
77
|
-
files:
|
70
|
+
files:
|
78
71
|
- .gitignore
|
79
72
|
- Gemfile
|
80
73
|
- LICENSE
|
81
74
|
- README.md
|
82
75
|
- Rakefile
|
76
|
+
- bin/jam
|
77
|
+
- examples/reverse-words/B-small-practice.in
|
78
|
+
- examples/reverse-words/README.md
|
79
|
+
- examples/reverse-words/reverse-words.rb
|
80
|
+
- examples/rope-intranet/A-large-practice.in
|
81
|
+
- examples/rope-intranet/A-small-practice.in
|
82
|
+
- examples/rope-intranet/README.md
|
83
|
+
- examples/rope-intranet/rope-intranet.rb
|
83
84
|
- lib/marmalade.rb
|
84
85
|
- lib/marmalade/file_reader.rb
|
86
|
+
- lib/marmalade/project_builder.rb
|
85
87
|
- lib/marmalade/puzzle.rb
|
86
88
|
- lib/marmalade/version.rb
|
87
89
|
- marmalade.gemspec
|
88
90
|
- spec/fixtures/input_0.txt
|
89
91
|
- spec/marmalade/file_reader_spec.rb
|
90
92
|
- spec/marmalade/marmalade_spec.rb
|
93
|
+
- spec/marmalade/project_builder_spec.rb
|
91
94
|
- spec/marmalade/puzzle_spec.rb
|
92
95
|
- spec/spec_helper.rb
|
96
|
+
- templates/Rakefile
|
97
|
+
- templates/main.rb
|
98
|
+
- templates/main_spec.rb
|
93
99
|
homepage: http://www.github.com/rustygeldmacher/marmalade
|
94
100
|
licenses: []
|
95
|
-
|
96
101
|
post_install_message:
|
97
102
|
rdoc_options: []
|
98
|
-
|
99
|
-
require_paths:
|
103
|
+
require_paths:
|
100
104
|
- lib
|
101
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
105
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
102
106
|
none: false
|
103
|
-
requirements:
|
104
|
-
- -
|
105
|
-
- !ruby/object:Gem::Version
|
106
|
-
|
107
|
-
|
108
|
-
- 0
|
109
|
-
version: "0"
|
110
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ! '>='
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
111
112
|
none: false
|
112
|
-
requirements:
|
113
|
-
- -
|
114
|
-
- !ruby/object:Gem::Version
|
115
|
-
|
116
|
-
segments:
|
117
|
-
- 0
|
118
|
-
version: "0"
|
113
|
+
requirements:
|
114
|
+
- - ! '>='
|
115
|
+
- !ruby/object:Gem::Version
|
116
|
+
version: '0'
|
119
117
|
requirements: []
|
120
|
-
|
121
118
|
rubyforge_project:
|
122
|
-
rubygems_version: 1.8.
|
119
|
+
rubygems_version: 1.8.21
|
123
120
|
signing_key:
|
124
121
|
specification_version: 3
|
125
122
|
summary: Helper for Google Code Jam puzzles
|
126
|
-
test_files:
|
123
|
+
test_files:
|
127
124
|
- spec/fixtures/input_0.txt
|
128
125
|
- spec/marmalade/file_reader_spec.rb
|
129
126
|
- spec/marmalade/marmalade_spec.rb
|
127
|
+
- spec/marmalade/project_builder_spec.rb
|
130
128
|
- spec/marmalade/puzzle_spec.rb
|
131
129
|
- spec/spec_helper.rb
|
132
|
-
has_rdoc:
|