grizzled-ruby 0.1.8 → 0.1.9

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3a9bf6fb79b0bf8133f1066e3988904216fc35be
4
- data.tar.gz: 60702eaa56fe5b5709c646f3a74218c1f5f807ee
3
+ metadata.gz: d1d47485666a44d0c6b8f14c3372af933bfe142d
4
+ data.tar.gz: fdfab3b4ce6f7cadf7a7fc47764425789e157bfb
5
5
  SHA512:
6
- metadata.gz: 9118e347acb11a7a2c1cf8cad109ab90418e7b60bc0c8b17a3cc0620a7d880b2a8bfe7704b629ed5a79310e75755232c636bc29039eb19d235fdf3ccf6d11661
7
- data.tar.gz: 910898bd67fb2c3b1bbe99695e38e4c1336e3799b33ab7defdb5a21ce2b691948838a77e7d2c39177282c7d72d5107bac5afd139b0ea84484ca8a0fa8667ad41
6
+ metadata.gz: 14166d49fd3e5e93adbfd8a5e79ed282d9952561a536096686633a4b2cad858919144163d89633cbd670300efe4447c4001b915f7fe7d1c26aed594c9312c582
7
+ data.tar.gz: 65ad1894cdd9f6018807b7ee697d96e4807972c29332cc33dcdbc9b71d6c105261090b4fc5c31a1461d2a0c64f9e65e31e9c76e2e23142dcdaead31c8a65a739
@@ -1,5 +1,14 @@
1
1
  # Change Log for Grizzled Ruby
2
2
 
3
+ Version 0.1.9 (28 September, 2015)
4
+
5
+ - Updated `Grizzled::FileUtil::Includer` to sort globbed files, by default.
6
+
7
+ Version 0.1.8 (8 September, 2015)
8
+
9
+ - Updated `Grizzled::FileUtil::Includer` to handle glob paths.
10
+ - Fixed various tests and tested against Ruby 2.
11
+
3
12
  Version 0.1.5 (...)
4
13
 
5
14
  - Added `WrapMany` class.
data/Gemfile CHANGED
@@ -2,3 +2,5 @@ source 'https://rubygems.org'
2
2
 
3
3
  gem 'rake'
4
4
  gem 'zip'
5
+ gem 'test-unit'
6
+ gem 'pry'
@@ -1,12 +1,27 @@
1
1
  GEM
2
2
  remote: https://rubygems.org/
3
3
  specs:
4
+ coderay (1.1.0)
5
+ method_source (0.8.2)
6
+ power_assert (0.2.4)
7
+ pry (0.10.2)
8
+ coderay (~> 1.1.0)
9
+ method_source (~> 0.8.1)
10
+ slop (~> 3.4)
4
11
  rake (10.4.2)
12
+ slop (3.6.0)
13
+ test-unit (3.1.3)
14
+ power_assert
5
15
  zip (2.0.2)
6
16
 
7
17
  PLATFORMS
8
18
  ruby
9
19
 
10
20
  DEPENDENCIES
21
+ pry
11
22
  rake
23
+ test-unit
12
24
  zip
25
+
26
+ BUNDLED WITH
27
+ 1.10.6
@@ -3,8 +3,8 @@
3
3
  Gem::Specification.new do |s|
4
4
 
5
5
  s.name = 'grizzled-ruby'
6
- s.version = '0.1.8'
7
- s.date = '2015-09-08'
6
+ s.version = '0.1.9'
7
+ s.date = '2015-09-28'
8
8
  s.summary = 'Some general-purpose Ruby modules, classes, and tools'
9
9
  s.authors = ['Brian M. Clapper']
10
10
  s.license = 'BSD'
@@ -0,0 +1,9 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <module type="RUBY_MODULE" version="4">
3
+ <component name="NewModuleRootManager" inherit-compiler-output="true">
4
+ <exclude-output />
5
+ <content url="file://$MODULE_DIR$" />
6
+ <orderEntry type="inheritedJdk" />
7
+ <orderEntry type="sourceFolder" forTests="false" />
8
+ </component>
9
+ </module>
@@ -174,11 +174,14 @@ module Grizzled
174
174
  # or URL. Default: ^%include\s"([^"]+)"
175
175
  # allow_glob:: For file names, allow and expand glob expressions.
176
176
  # Doesn't apply to URLs.
177
+ # sort_glob: true to force a sort of the globbed expression
178
+ # (default), false not to sort.
177
179
  def initialize(source, options={})
178
180
  @max_nesting = options.fetch(:max_nesting, 100)
179
181
  inc_pattern = options.fetch(:include_pattern, '^%include\s"([^"]+)"')
180
182
  @include_re = /#{inc_pattern}/
181
183
  @allow_glob = options.fetch(:allow_glob, false)
184
+ @sort_glob = options.fetch(:sort_glob, true)
182
185
  includer_source = source_to_includer_source source
183
186
  @source_uri = includer_source.uri
184
187
  @temp = preprocess includer_source
@@ -203,9 +206,9 @@ module Grizzled
203
206
 
204
207
  def source_to_includer_source(source)
205
208
  if source.class == String
206
- open_source(URI::parse(source))
209
+ open_source(URI::parse(source), source)
207
210
  elsif source.class == File
208
- open_source(URI::parse(source.path))
211
+ open_source(URI::parse(source.path), source.path)
209
212
  elsif source.respond_to? :each_line
210
213
  IncludeSource.new(source, nil)
211
214
  else
@@ -261,16 +264,17 @@ module Grizzled
261
264
  File.join(::File.dirname(cur_uri.path), source)
262
265
  )
263
266
  uri = FakeURI.new(abs)
267
+ source = abs
264
268
  end
265
269
  end
266
270
 
267
- open_source(uri)
271
+ open_source(uri, source)
268
272
  end
269
273
 
270
274
  # Open an input source, based on a parsed URI.
271
- def open_source(uri)
275
+ def open_source(uri, source)
272
276
  case uri.scheme
273
- when nil then f = open_path(uri.path) # assume file/path
277
+ when nil then f = open_path(source) # assume file/path
274
278
  when 'file' then f = open(uri.path) # open path directly
275
279
  when 'http' then f = open(uri.to_s) # open-uri will handle it
276
280
  when 'https' then f = open(uri.to_s) # open-uri will handle it
@@ -284,7 +288,9 @@ module Grizzled
284
288
 
285
289
  def open_path(path)
286
290
  if @allow_glob
287
- FileIterator.new(Dir.glob(path))
291
+ globs = Dir.glob(path)
292
+ globs.sort! if @sort_glob
293
+ FileIterator.new(globs)
288
294
  else
289
295
  File.open(path)
290
296
  end
@@ -65,8 +65,8 @@ EOF
65
65
  end
66
66
  end
67
67
 
68
- def test_glob
69
- temps = ["/tmp/foo.txt", "/tmp/foo1.txt", "/tmp/foo2.txt"]
68
+ def test_glob_unsorted
69
+ temps = ["/tmp/foo.txt", "/tmp/boo1.txt", "/tmp/foo2.txt"]
70
70
  main = File.open(temps[0], "w")
71
71
  temp1 = File.open(temps[1], "w")
72
72
  temp2 = File.open(temps[2], "w")
@@ -84,18 +84,44 @@ EOF2
84
84
  temp1.close
85
85
  temp2.close
86
86
  File.open(main, "w") do |f|
87
- f.write('%include "./foo[0-9]*.txt"\n')
87
+ f.write('%include "./?oo[0-9]*.txt"' + "\n")
88
88
  end
89
89
 
90
- inc = Includer.new(main, allow_glob: true)
90
+ main = File.open(temps[0])
91
+ inc = Includer.new(main, allow_glob: true, sort_glob: false)
91
92
  contents = inc.read
92
- assert_equal("one-1\ntwo-1\none-2\ntwo-2\n", contents)
93
+ assert_true(contents.include?("one-1\ntwo-1"))
93
94
  ensure
94
95
  [main, temp1, temp2].each { |f| f.close unless f.closed? }
95
96
  temps.each { |path| File.delete(path) }
96
97
  end
97
98
  end
98
99
 
100
+ def test_glob_sorted
101
+ temps = ['/tmp/glob_z.txt', '/tmp/glob_a.txt', '/tmp/glob_m.txt']
102
+ main = "/tmp/glob_main.txt"
103
+ begin
104
+ temps.each do |t|
105
+ File.open(t, "w") do |f|
106
+ f.write("In #{t}\n")
107
+ end
108
+ end
109
+ File.open(main, "w") do |f|
110
+ f.write('%include "/tmp/glob_?.txt"' + "\n")
111
+ end
112
+
113
+ contents = File.open(main) do |f|
114
+ Includer.new(f, allow_glob: true).read
115
+ end
116
+ expected = temps.sort.map { |s| "In #{s}\n" }.join('')
117
+ puts("contents=#{contents}")
118
+ puts("expected=#{expected}")
119
+ assert_equal(expected, contents)
120
+ ensure
121
+ (temps + [main]).each { |path| File.delete(path) }
122
+ end
123
+ end
124
+
99
125
  private
100
126
 
101
127
  def make_include_file
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: grizzled-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.8
4
+ version: 0.1.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brian M. Clapper
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-09-08 00:00:00.000000000 Z
11
+ date: 2015-09-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: zip
@@ -44,6 +44,7 @@ files:
44
44
  - README.md
45
45
  - Rakefile
46
46
  - grizzled-ruby.gemspec
47
+ - grizzled-ruby.iml
47
48
  - lib/grizzled.rb
48
49
  - lib/grizzled/dir.rb
49
50
  - lib/grizzled/fileutil.rb
@@ -80,7 +81,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
80
81
  version: '0'
81
82
  requirements: []
82
83
  rubyforge_project:
83
- rubygems_version: 2.2.2
84
+ rubygems_version: 2.4.5.1
84
85
  signing_key:
85
86
  specification_version: 4
86
87
  summary: Some general-purpose Ruby modules, classes, and tools