valise 0.9.1 → 1.0.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.
@@ -39,7 +39,7 @@ module Valise
39
39
  if block_given?
40
40
  options = yield(mapping)
41
41
  end
42
- new_set.add_serialization_handler("**/*.#{mapping}", :tilt, options)
42
+ new_set.add_serialization_handler("**.#{mapping}", :tilt, options)
43
43
  end
44
44
  new_set
45
45
  end
data/lib/valise/errors.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  module Valise
2
2
  module Errors
3
- class Error < ::Exception; end
3
+ class Error < ::StandardError; end
4
4
 
5
5
  class PathOutsideOfRoot < Error; end
6
6
  class PathNotInRoot < Error; end
@@ -11,6 +11,7 @@ module Valise
11
11
  class MalformedTree < Error; end
12
12
  class RootNotInSet < Error; end
13
13
  class UnderIndented < Error; end
14
+ class NoMatchingPath < Error; end
14
15
 
15
16
  class UnregisteredStrategy < Error
16
17
  def initialize(klass, type)
@@ -6,131 +6,56 @@ module Valise
6
6
  include Enumerable
7
7
 
8
8
  def self.build(path, value = true)
9
- case path
10
- when PathMatcher
11
- return path
12
- when String, Array
13
- matcher = PathMatcher.new
14
- matcher[path] = value
15
- return matcher
16
- else
17
- raise ArgumentError, "Path matchers can only be built from arrays or strings"
18
- end
19
- end
20
-
21
- def initialize(segment = nil)
22
- @children = []
23
- @segment = segment
24
- @value = nil
9
+ return path if PathMatcher === path
10
+ path = Unpath::make_pathname(path).to_s
11
+ self.new(path, value)
25
12
  end
26
13
 
27
- attr_reader :segment
28
-
29
- def each_pair(prefix = [])
30
- segments = prefix.dup
31
- segments << @segment if @segment
32
- @children.each do |child|
33
- child.each_pair(segments) do |segments, value|
34
- yield(segments, value)
35
- end
36
- end
37
- yield(segments, @value) if @value
38
- end
39
-
40
- def each(prefix = [])
41
- each_pair do |segments, value|
42
- yield(segments) if !!value
43
- end
14
+ def initialize(first_pattern=nil, first_value=true)
15
+ @pattern_pairs = []
16
+ set(first_pattern, first_value) unless first_pattern.nil?
44
17
  end
45
18
 
46
- def merge!(other)
47
- other.each_pair do |path, value|
48
- self[path] = value
49
- end
50
- end
51
-
52
- def [](path)
53
- retreive(unpath(path))
19
+ def ===(path)
20
+ path = make_pathname(path)
21
+ fetch(path)
22
+ return true
23
+ rescue KeyError
24
+ return false
54
25
  end
55
26
 
56
- def retreive(segments)
57
- if segments.empty?
58
- return @value
59
- else
60
- @children.each do |child|
61
- val = child.access(segments)
62
- return val unless val.nil?
27
+ def fetch(path)
28
+ @pattern_pairs.each do |pattern, value|
29
+ if path.fnmatch?(pattern)
30
+ return value
63
31
  end
64
32
  end
65
- return nil
66
- end
67
-
68
- def access(segments)
69
- return retreive(segments.drop(1)) if match?(segments.first)
70
- return nil
33
+ raise KeyError, "No pattern matches #{path.to_s}"
71
34
  end
72
35
 
73
- def match?(segment)
74
- @segment == segment
75
- end
76
-
77
- def []=(pattern, result)
78
- store(unpath(pattern), result)
79
- end
80
-
81
- def ===(path)
82
- return !!self[path]
36
+ def [](path)
37
+ fetch(path)
38
+ rescue KeyError
39
+ nil
83
40
  end
84
41
 
85
- def store(segments, result)
86
- if segments.empty?
87
- @value = result
88
- else
89
- index = segments.shift
90
- target = @children.find {|child| child.segment == index } ||
91
- case index
92
- when "**"; DirGlob.new.tap{|m| @children << m}
93
- when /.*[*].*/; FileGlob.new(index).tap{|m| @children << m}
94
- else; PathMatcher.new(index).tap{|m| @children.unshift m}
95
- end
96
- target.store(segments, result)
42
+ def set(pattern, value)
43
+ @pattern_pairs.delete_if do |old_pattern, _|
44
+ pattern == old_pattern
97
45
  end
46
+ @pattern_pairs << [pattern.to_s, value]
98
47
  end
99
- end
100
-
101
- class DirGlob < PathMatcher
102
- def initialize
103
- super('**')
104
- end
48
+ alias []= set
105
49
 
106
- def match?(segment)
107
- true
108
- end
109
-
110
- def access(segments)
111
- if segments.empty?
112
- return @value
113
- else
114
- retreive(segments) || access(segments.drop(1))
50
+ def each_pair
51
+ @pattern_pairs.each do |pattern, value|
52
+ yield pattern, value
115
53
  end
116
54
  end
117
- end
118
-
119
- class FileGlob < PathMatcher
120
- def initialize(segment)
121
- super
122
- @regex = %r{^#{segment.gsub(/[.]/, "[.]").gsub(/[*]/,".*")}$}
123
- end
124
-
125
- def match?(segment)
126
- @regex =~ segment
127
- end
128
55
 
129
- def store(segments, result)
130
- if segments.empty?
131
- @value = result
132
- else
133
- raise ArgumentError, "File globs can only be used as suffixes"
56
+ def merge!(other)
57
+ other.each_pair do |pattern, value|
58
+ set(pattern, value)
134
59
  end
135
60
  end
136
61
  end
@@ -10,33 +10,23 @@ module Valise
10
10
  include Enumerable
11
11
 
12
12
  def initialize(path)
13
- @segments = unpath(path)
13
+ @segments = make_pathname(path)
14
14
  end
15
15
 
16
16
  attr_accessor :segments
17
17
 
18
- #ALL_FILES = PathMatcher.build('**')
19
18
  def each(pathmatch = nil)
20
- # pathmatch ||= ALL_FILES
21
- # files = pathmatch.fnmatchers(@segments).inject([]) do |list, fnmatch|
22
- # list + Dir.glob(fnmatch).find_all{|path| File::file?(path)}
23
- # end
24
- # pathmatch.sort(files).each
25
- #
26
- #
27
- paths = [[]]
19
+ paths = [make_pathname("")]
28
20
  until paths.empty?
29
21
  rel = paths.shift
30
- path = repath(@segments + rel)
22
+ path = @segments + rel
31
23
  #symlinks?
32
- if(File::directory?(path))
33
- Dir.entries(path).each do |entry|
34
- next if entry == "."
35
- next if entry == ".."
36
- paths.push(rel + [entry])
24
+ if path.directory?
25
+ paths += path.children(false).map do |child|
26
+ rel + child
37
27
  end
38
- elsif(File::file?(path))
39
- yield(unpath(rel))
28
+ elsif path.file?
29
+ yield rel
40
30
  end
41
31
  end
42
32
  end
@@ -50,7 +40,7 @@ module Valise
50
40
  end
51
41
 
52
42
  def full_path(segments)
53
- repath(@segments + segments)
43
+ (@segments + make_pathname(segments)).to_s
54
44
  end
55
45
 
56
46
  def write(item)
@@ -96,7 +86,7 @@ module Valise
96
86
  end
97
87
 
98
88
  def full_path(segments)
99
- "<DEFAULTS>:" + repath(segments)
89
+ "<DEFAULTS>:" + segments.to_s
100
90
  end
101
91
 
102
92
  def present?(segments)
@@ -105,7 +95,7 @@ module Valise
105
95
 
106
96
  def each
107
97
  @files.each_key do |path|
108
- yield(unpath(path))
98
+ yield(make_pathname(path))
109
99
  end
110
100
  end
111
101
 
@@ -133,7 +123,7 @@ module Valise
133
123
  end
134
124
  check_path.pop
135
125
  end
136
- @files[path] = contents
126
+ @files[make_pathname(path)] = contents
137
127
  end
138
128
 
139
129
  def add_dir(path)
@@ -7,7 +7,7 @@ module Valise
7
7
  class StemmedDefiner
8
8
  include Unpath
9
9
  def initialize(path, set)
10
- @segments = unpath(path)
10
+ @segments = make_pathname(path)
11
11
  @target = set
12
12
  end
13
13
 
@@ -43,7 +43,7 @@ module Valise
43
43
  end
44
44
 
45
45
  def handle(path, serialization, merge_diff = nil)
46
- @target.add_handler(unpath(path),
46
+ @target.add_handler(make_pathname(path),
47
47
  serialization,
48
48
  merge_diff)
49
49
  end
data/lib/valise/set.rb CHANGED
@@ -1,4 +1,3 @@
1
- require 'valise/debugging'
2
1
  require 'valise/errors'
3
2
  require 'valise/search-root'
4
3
  require 'valise/utils'
@@ -10,7 +9,6 @@ require 'valise/set/extensions-decorator'
10
9
 
11
10
  module Valise
12
11
  class Set
13
- include Debugging
14
12
  include Enumerable
15
13
  include Unpath
16
14
 
@@ -24,8 +22,8 @@ module Valise
24
22
  search_roots.inspect
25
23
  end
26
24
 
27
- def to_s
28
- search_roots.map(&:to_s).join(":")
25
+ def to_s(joiner=nil)
26
+ search_roots.map(&:to_s).join(joiner||":")
29
27
  end
30
28
 
31
29
  def exts(*extensions)
@@ -49,7 +47,7 @@ module Valise
49
47
  end
50
48
 
51
49
  def sub_set(path)
52
- segments = unpath(path)
50
+ segments = make_pathname(path)
53
51
  transform do |roots|
54
52
  roots.map do |root|
55
53
  new_root = root.dup
@@ -60,7 +58,7 @@ module Valise
60
58
  end
61
59
 
62
60
  def stemmed(path)
63
- segments = unpath(path)
61
+ segments = make_pathname(path)
64
62
  transform do |roots|
65
63
  roots.map do |root|
66
64
  StemDecorator.new(segments, root)
@@ -102,7 +100,13 @@ module Valise
102
100
  search_roots << search_root
103
101
  end
104
102
 
103
+ def clean_pattern(pattern)
104
+ #deprecation warning maybe
105
+ pattern.sub(%r{^[*][*]/[*]}, '**')
106
+ end
107
+
105
108
  def add_handler(segments, serialization_class, merge_diff_class)
109
+ segments = clean_pattern(segments)
106
110
  add_serialization_handler(segments, serialization_class)
107
111
  add_merge_handler(segments, merge_diff_class)
108
112
  end
@@ -133,13 +137,13 @@ module Valise
133
137
  :serialization=, :serialization
134
138
 
135
139
  def merge_diff_for(stack)
136
- type, options = *(merge_diff[unpath(stack.segments)] || [])
140
+ type, options = *(merge_diff[make_pathname(stack.segments)] || [])
137
141
  options = (options || {}).merge(:stack => stack)
138
142
  Strategies::MergeDiff.instance(type, options)
139
143
  end
140
144
 
141
145
  def serialization_for(stack)
142
- type, options = *serialization[unpath(stack.segments)]
146
+ type, options = *serialization[make_pathname(stack.segments)]
143
147
  Strategies::Serialization.instance(type, options)
144
148
  end
145
149
 
@@ -160,6 +164,10 @@ module Valise
160
164
  get(path).find
161
165
  end
162
166
 
167
+ def contents(path)
168
+ find(path).contents
169
+ end
170
+
163
171
  def each(&block)
164
172
  search_roots.each(&block)
165
173
  end
@@ -6,7 +6,9 @@ module Valise
6
6
  def initialize(stack)
7
7
  @stack = stack
8
8
  @extensions = []
9
- @stacks = Hash.new{|h,segments| h[segments] = @stack.valise.get(segments) }
9
+ @stacks = Hash.new do |h,segments|
10
+ h[segments] = @stack.valise.get(segments)
11
+ end
10
12
  end
11
13
 
12
14
  attr_accessor :extensions
@@ -41,9 +43,8 @@ module Valise
41
43
  return enum_for(:each) unless block_given?
42
44
  @stack.each do |item|
43
45
  @extensions.each do |ext|
44
- dir = item.segments.dup
45
- file = dir.pop
46
- ext_stack = @stacks[dir + [file + ext]]
46
+ dir, file = *item.segments.split
47
+ ext_stack = @stacks[dir + (file.to_s + ext)]
47
48
  yield(ext_stack.item_for(item.root))
48
49
  end
49
50
  end
data/lib/valise/stack.rb CHANGED
@@ -9,18 +9,18 @@ module Valise
9
9
  include ItemEnum
10
10
 
11
11
  def inspect
12
- "<default>:#{(@segments||%w{?}).join "/"} #{@valise.inspect}"
12
+ "<default>:#{(@segments||%{?})} #{@valise.inspect}"
13
13
  end
14
14
 
15
15
  def initialize(path, set)
16
- @segments = collapse(unpath(path))
16
+ @segments = make_pathname(path)
17
17
  @valise = set
18
18
  end
19
19
 
20
20
  attr_reader :segments, :valise
21
21
 
22
22
  def rel_path
23
- repath(@segments)
23
+ @segments
24
24
  end
25
25
 
26
26
  def merge_diff
@@ -58,7 +58,7 @@ module Valise
58
58
  def find
59
59
  item = present.first
60
60
  return item unless item.nil?
61
- raise Errors::NotFound, "#{rel_path} not found in #{@valise.inspect}"
61
+ raise Errors::NotFound, "'#{rel_path}' not found in #{valise.inspect}"
62
62
  end
63
63
 
64
64
  def exts(*extensions)
@@ -19,18 +19,21 @@ module Valise
19
19
  @search_root.segments = segments
20
20
  end
21
21
 
22
+ def stem_pattern
23
+ (@stem + "**").to_s
24
+ end
25
+
22
26
  def under_stem(path)
23
- segments = unpath(path)
24
- top_part = segments[0...@stem.length]
25
- if top_part == @stem
26
- return segments[@stem.length..-1]
27
+ segments = make_pathname(path)
28
+ if path.fnmatch?(stem_pattern)
29
+ return path.relative_path_from(@stem)
27
30
  else
28
31
  raise Errors::PathOutsideOfRoot
29
32
  end
30
33
  end
31
34
 
32
35
  def inspect
33
- "#{self.class.name.split(":").last}:[#{@stem.join("/")}]#{@search_root.inspect}"
36
+ "#{self.class.name.split(":").last}:[#{@stem.to_s}]#{@search_root.inspect}"
34
37
  end
35
38
 
36
39
  def each
data/lib/valise/utils.rb CHANGED
@@ -1,3 +1,6 @@
1
+ require 'pathname'
2
+ require 'valise/errors'
3
+
1
4
  module Valise
2
5
  module StringTools
3
6
  def align(string)
@@ -17,13 +20,8 @@ module Valise
17
20
  module_function :align
18
21
  end
19
22
 
20
- #XXX This has been overtaken by std-lib Pathname and should be mostly
21
- #refactored out
22
23
  module Unpath
23
- def string_to_segments(string)
24
- return string if string.empty?
25
- string.split(::File::Separator)
26
- end
24
+ extend self
27
25
 
28
26
  def file_from_backtrace(line)
29
27
  /(.*):\d+/.match(line)[1]
@@ -31,88 +29,109 @@ module Valise
31
29
 
32
30
  def from_here(rel_path, base_path = nil)
33
31
  base_path ||= file_from_backtrace(caller[0])
34
- repath(collapse(unpath(base_path) + unpath(rel_path)))
32
+ make_pathname(base_path) + make_pathname(rel_path)
33
+ end
34
+
35
+ def starting_directory
36
+ make_pathname(ENV['PWD'] || Dir.pwd)
37
+ #Otherwise symlinks won't behave as expected
38
+ end
39
+ alias start_dir starting_directory
40
+
41
+ def current_directory
42
+ make_pathname(Dir.pwd)
35
43
  end
36
44
 
37
- def up_to(up_to = nil, base_path = nil)
45
+ def up_to(up_to=nil, base_path = nil)
38
46
  base_path ||= file_from_backtrace(caller[0])
39
47
  up_to ||= "lib"
40
48
 
41
- abs_path = File::expand_path(base_path)
42
- base_path = unpath(base_path)
43
- until base_path.empty? or base_path.last == up_to
44
- base_path.pop
49
+ up_until(base_path, "Path with basename #{up_to.inspect}") do |path|
50
+ path.basename.to_s == up_to
45
51
  end
52
+ end
46
53
 
47
- if base_path.empty?
48
- raise "Relative root #{up_to.inspect} not found in #{abs_path.inspect}"
49
- end
54
+ class WorkspaceFinder
55
+ include Unpath
50
56
 
51
- return repath(base_path)
52
- end
57
+ attr_accessor :search_from, :workspace_children, :description, :fallback
53
58
 
54
- def unpath(parts)
55
- if Array === parts and parts.length == 1
56
- parts = parts[0]
59
+ def search_from
60
+ @search_from ||= start_dir
57
61
  end
58
62
 
59
- case parts
60
- when Array
61
- if (parts.find{|part| not (String === part or Symbol === part)}.nil?)
62
- parts = parts.map{|part| string_to_segments(part.to_s)}.flatten
63
- else
64
- raise ArgumentError, "path must be composed of strings or symbols"
65
- end
66
- when String
67
- parts = string_to_segments(parts)
68
- when Symbol
69
- parts = string_to_segments(parts.to_s)
70
- when ::File
71
- parts = parts.path
72
- parts = parts.split(::File::Separator)
73
- else
74
- raise ArgumentError, "path must be String, Array of Strings or File"
63
+ def workspace_children
64
+ @workspace_children ||= %w{.git .hg _MTN}
75
65
  end
76
66
 
77
- if /^~/ =~ parts[0]
78
- parts = ::File::expand_path(parts[0]).split(::File::Separator) + parts[1..-1]
67
+ def description
68
+ @description ||= "Version control workspace"
79
69
  end
80
70
 
81
- return parts
82
- end
71
+ def search_start
72
+ path = make_pathname(search_from)
73
+ path = path.realpath unless path.absolute?
74
+ path
75
+ end
83
76
 
84
- def collapse(segments)
85
- collapsed = []
86
- segments.each do |segment|
87
- case segment
88
- when '.'
89
- when ""
90
- if collapsed.empty?
91
- collapsed.push segment
92
- end
93
- when '..'
94
- if collapsed.empty?
95
- collapsed.push segment
96
- else
97
- collapsed.pop
77
+ def find
78
+ up_until(search_start, description) do |path|
79
+ path.children(false).any? do |child|
80
+ workspace_children.any? do |vc_config|
81
+ child.fnmatch? vc_config
82
+ end
98
83
  end
84
+ end
85
+ rescue Errors::NoMatchingPath
86
+ if fallback.nil?
87
+ raise
99
88
  else
100
- collapsed.push segment
89
+ fallback
101
90
  end
102
91
  end
103
- collapsed
104
92
  end
105
93
 
106
- def repath(segments)
107
- case segments
94
+ def containing_workspace
95
+ finder = WorkspaceFinder.new
96
+ yield finder if block_given?
97
+ finder.find
98
+ end
99
+
100
+ def up_until(base_path = nil, description=nil)
101
+ base_path ||= file_from_backtrace(caller[0])
102
+ make_pathname(base_path).ascend do |path|
103
+ if yield(path)
104
+ return path
105
+ end
106
+ end
107
+ raise Errors::NoMatchingPath, "#{description || "Satisfactory path"} not found in #{base_path}"
108
+ end
109
+
110
+ def clean_pathname(pathname)
111
+ pathname.sub(/^~[^#{File::Separator}]*/) do |homedir|
112
+ File::expand_path(homedir)
113
+ end.cleanpath
114
+ end
115
+
116
+ def make_pathname(parts)
117
+ case parts
118
+ when Pathname
119
+ return clean_pathname(parts)
108
120
  when Array
109
- return segments.join(::File::Separator)
121
+ unless parts.any?{|part| not (String === part or Symbol === part)}
122
+ parts = File::join(parts.map{|part| part.to_s})
123
+ else
124
+ raise ArgumentError, "path must be composed of strings or symbols"
125
+ end
110
126
  when String
111
- return segments
127
+ when Symbol
128
+ parts = parts.to_s
129
+ when ::File
130
+ parts = parts.path
131
+ else
132
+ raise ArgumentError, "path must be String, Array of Strings or File"
112
133
  end
134
+ pathname = clean_pathname(Pathname.new(parts))
113
135
  end
114
-
115
- module_function :from_here, :up_to, :unpath, :repath, :string_to_segments, :file_from_backtrace
116
- public :from_here, :up_to, :file_from_backtrace
117
136
  end
118
137
  end
data/spec/fileset.rb CHANGED
@@ -36,7 +36,7 @@ describe Valise do
36
36
 
37
37
  describe "retrieving files" do
38
38
  it "should get default text files" do
39
- @valise.find("text").contents.should == "Some text"
39
+ @valise.contents("text").should == "Some text"
40
40
  @valise.find(:text).contents.should == "Some text"
41
41
  end
42
42
 
data/spec/population.rb CHANGED
@@ -31,7 +31,7 @@ describe Valise do
31
31
  end
32
32
 
33
33
  it "should populate successfully" do
34
- @to.find("egg").contents.should == "yolk"
34
+ @to.contents("egg").should == "yolk"
35
35
  @to.find("existed").contents.should == "TEST"
36
36
  end
37
37
  end
@@ -45,7 +45,7 @@ describe Valise do
45
45
 
46
46
  it "should populate successfully" do
47
47
  @to.find("egg").contents.should == "yolk"
48
- @to.find("existed").contents.should == "TEST"
48
+ @to.contents("existed").should == "TEST"
49
49
  end
50
50
  end
51
51
  end
@@ -1,5 +1,9 @@
1
1
  require 'rspec'
2
+ #require 'cadre/rspec'
2
3
 
3
4
  RSpec.configure do |config|
4
5
  config.backtrace_clean_patterns.delete(/gems/)
6
+ config.run_all_when_everything_filtered = true
7
+ # config.add_formatter(Cadre::RSpec::NotifyOnCompleteFormatter)
8
+ # config.add_formatter(Cadre::RSpec::QuickfixFormatter)
5
9
  end
metadata CHANGED
@@ -1,32 +1,32 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: valise
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.1
5
4
  prerelease:
5
+ version: 1.0.0
6
6
  platform: ruby
7
7
  authors:
8
8
  - Judson Lester
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-03-31 00:00:00.000000000 Z
12
+ date: 2013-07-25 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
+ prerelease: false
16
+ type: :development
15
17
  name: corundum
16
- requirement: !ruby/object:Gem::Requirement
17
- none: false
18
+ version_requirements: !ruby/object:Gem::Requirement
18
19
  requirements:
19
20
  - - ! '>='
20
21
  - !ruby/object:Gem::Version
21
22
  version: '0'
22
- type: :development
23
- prerelease: false
24
- version_requirements: !ruby/object:Gem::Requirement
25
23
  none: false
24
+ requirement: !ruby/object:Gem::Requirement
26
25
  requirements:
27
26
  - - ! '>='
28
27
  - !ruby/object:Gem::Version
29
28
  version: '0'
29
+ none: false
30
30
  description: ! " Valise provides an API for accessing configuration and data files
31
31
  for your\n application, including the population of default values, and managing
32
32
  search\n paths. Written to encourage a cross-platform approach to maintaining
@@ -107,7 +107,6 @@ files:
107
107
  - doc/Specifications
108
108
  - lib/valise.rb
109
109
  - lib/valise/item-enum.rb
110
- - lib/valise/debugging.rb
111
110
  - lib/valise/utils.rb
112
111
  - lib/valise/errors.rb
113
112
  - lib/valise/adapters.rb
@@ -209,24 +208,24 @@ rdoc_options:
209
208
  - --main
210
209
  - doc/README
211
210
  - --title
212
- - valise-0.9.1 RDoc
211
+ - valise-1.0.0 RDoc
213
212
  require_paths:
214
213
  - lib/
215
214
  required_ruby_version: !ruby/object:Gem::Requirement
216
- none: false
217
215
  requirements:
218
216
  - - ! '>='
219
217
  - !ruby/object:Gem::Version
220
- version: '0'
221
218
  segments:
222
219
  - 0
223
- hash: 907833537
224
- required_rubygems_version: !ruby/object:Gem::Requirement
220
+ hash: -884203725
221
+ version: '0'
225
222
  none: false
223
+ required_rubygems_version: !ruby/object:Gem::Requirement
226
224
  requirements:
227
225
  - - ! '>='
228
226
  - !ruby/object:Gem::Version
229
227
  version: '0'
228
+ none: false
230
229
  requirements: []
231
230
  rubyforge_project: valise
232
231
  rubygems_version: 1.8.24
@@ -1,19 +0,0 @@
1
- module Valise
2
- module Debugging
3
- def remark
4
- end
5
-
6
- class << self
7
- attr_reader :remark_to
8
-
9
- def enable(destination)
10
- @remark_to = destination
11
- class_eval do
12
- def remark
13
- self.class.remark_to.puts(yield)
14
- end
15
- end
16
- end
17
- end
18
- end
19
- end