globby 0.1.1 → 0.1.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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: b9f9316d279400e594fa7fb870e1d34cad379c42
4
+ data.tar.gz: f6a17b74c29c236adb60637fb7069308e1e1801a
5
+ SHA512:
6
+ metadata.gz: eda6154d16e52c35a10c8d02093e3d4a6204b2985f2aeefcc869a1faefa7605b3847c8ef9d98afd990c11ec969d4be83148bb7be418ac1ad0a2791490f1eaaf4
7
+ data.tar.gz: dd851cd69e3d919febf1bbadcee2a93ff54cb689aea6015055558b10c03d5702da1fbdf970e91509339142eef254c93c7a8ebe765dc369337d4f42af6935d9ee
data/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # globby
2
2
 
3
+ [<img src="https://travis-ci.org/jenseng/globby.svg" />](http://travis-ci.org/jenseng/globby)
4
+
3
5
  globby is a [`.gitignore`](http://www.kernel.org/pub/software/scm/git/docs/gitignore.html)-style
4
6
  file globber for ruby.
5
7
 
@@ -60,4 +62,4 @@ behaviors are platform independent in globby and can always be used:
60
62
 
61
63
  ## License
62
64
 
63
- Copyright (c) 2014 Jon Jensen, released under the MIT license
65
+ Copyright (c) 2013-2016 Jon Jensen, released under the MIT license
@@ -1,11 +1,12 @@
1
1
  module Globby
2
2
  class Glob
3
3
  def initialize(pattern)
4
+ pattern = pattern.dup
4
5
  @inverse = pattern.sub!(/\A!/, '')
5
6
  # remove meaningless wildcards
6
- @pattern = pattern.
7
- sub(/\A\/?(\*\*\/)+/, '').
8
- sub(/(\/\*\*)+\/\*\z/, '/**')
7
+ pattern.sub!(/\A\/?(\*\*\/)+/, '')
8
+ pattern.sub!(/(\/\*\*)+\/\*\z/, '/**')
9
+ @pattern = pattern
9
10
  end
10
11
 
11
12
  def match(files)
@@ -77,7 +78,7 @@ module Globby
77
78
  (part.split(/(#{GLOB_WILDCARD})/) - [""]).inject("") do |result, p|
78
79
  result << case p
79
80
  when '?'; '[^/]'
80
- when '*'; '[^/]*'
81
+ when '*'; '[^/]' + (result.end_with?("/") ? '+' : '*')
81
82
  else Regexp.escape(p)
82
83
  end
83
84
  end
@@ -2,8 +2,6 @@ require 'globby'
2
2
  require 'tmpdir'
3
3
  require 'fileutils'
4
4
 
5
- RSpec.configure { |config| config.mock_framework = :mocha }
6
-
7
5
  describe Globby do
8
6
  around do |example|
9
7
  gitignore_test { example.run }
@@ -12,14 +10,14 @@ describe Globby do
12
10
  describe ".select" do
13
11
  it "should match .gitignore perfectly" do
14
12
  rules = prepare_gitignore
15
- Globby.select(rules.split(/\n/)).should == all_files - git_files - untracked
13
+ expect(Globby.select(rules.split(/\n/))).to eq(all_files - git_files - untracked)
16
14
  end
17
15
  end
18
16
 
19
17
  describe ".reject" do
20
18
  it "should match the inverse of .gitignore, plus .git" do
21
19
  rules = prepare_gitignore
22
- Globby.reject(rules.split(/\n/)).should == git_files + untracked
20
+ expect(Globby.reject(rules.split(/\n/))).to eq(git_files + untracked)
23
21
  end
24
22
  end
25
23
 
@@ -49,6 +47,9 @@ describe Globby do
49
47
  # except rb files immediately under foobar
50
48
  !foobar/*.rb
51
49
 
50
+ # ooh look **
51
+ /a/**/*.yuss
52
+
52
53
  # this will match foo/bar but not bar
53
54
  bar/
54
55
 
@@ -57,6 +58,10 @@ describe Globby do
57
58
 
58
59
  # this will match baz/ and foobar/baz/
59
60
  baz
61
+
62
+ # check reinclusion
63
+ /spec/*
64
+ !/spec/noignore
60
65
  IGNORE
61
66
  File.open('.gitignore', 'w'){ |f| f.write ignore }
62
67
  ignore
@@ -77,6 +82,10 @@ describe Globby do
77
82
  foobar/baz.txt
78
83
  foobar/baz.rb
79
84
  foobar/baz/lol.wut
85
+ a/a.yuss
86
+ a/a/a/a/a.yuss
87
+ spec/nope
88
+ spec/noignore
80
89
  FILES
81
90
  files.each do |file|
82
91
  FileUtils.mkdir_p File.dirname(file)
@@ -85,7 +94,7 @@ describe Globby do
85
94
  end
86
95
 
87
96
  def untracked
88
- `git status -uall`.gsub(/.*#\n|#\s+|^nothing.*/m, '').split(/\n/)
97
+ `git status -uall --porcelain`.gsub(/^\?\? /m, '').split(/\n/)
89
98
  end
90
99
 
91
100
  def git_files
@@ -97,4 +106,4 @@ describe Globby do
97
106
  Dir.glob('**/*', File::FNM_DOTMATCH).
98
107
  select{ |f| File.symlink?(f) || File.file?(f) }.sort
99
108
  end
100
- end
109
+ end
@@ -1,84 +1,82 @@
1
1
  require 'globby'
2
2
 
3
- RSpec.configure { |config| config.mock_framework = :mocha }
4
-
5
3
  describe Globby do
6
4
  it "should support chaining" do
7
5
  files = files(%w{foo/bar.rb foo/baz.rb foo/c/bar.html foo/c/c/bar.rb})
8
- Globby.select(%w{*rb}, files).
9
- reject(%w{baz*}).
10
- select(%w{c}).should == %w{foo/c/c/bar.rb}
6
+ expect(Globby.select(%w{*rb}, files).
7
+ reject(%w{baz*}).
8
+ select(%w{c})).to eq %w{foo/c/c/bar.rb}
11
9
  end
12
10
 
13
11
  describe ".select" do
14
12
  context "a blank line" do
15
13
  it "should return nothing" do
16
14
  files = files("foo")
17
- Globby.select([""], files).should == []
15
+ expect(Globby.select([""], files)).to eq []
18
16
  end
19
17
  end
20
18
 
21
19
  context "a comment" do
22
20
  it "should return nothing" do
23
21
  files = files("foo")
24
- Globby.select(["#"], files).should == []
22
+ expect(Globby.select(["#"], files)).to eq []
25
23
  end
26
24
  end
27
25
 
28
26
  context "a pattern ending in a slash" do
29
27
  it "should return a matching directory's contents" do
30
28
  files = files(%w{foo/bar/baz foo/bar/baz2})
31
- Globby.select(%w{bar/}, files).should == %w{foo/bar/baz foo/bar/baz2}
29
+ expect(Globby.select(%w{bar/}, files)).to eq %w{foo/bar/baz foo/bar/baz2}
32
30
  end
33
31
 
34
32
  it "should ignore symlinks and regular files" do
35
33
  files = files(%w{foo/bar bar/baz})
36
- Globby.select(%w{bar/}, files).should == %w{bar/baz}
34
+ expect(Globby.select(%w{bar/}, files)).to eq %w{bar/baz}
37
35
  end
38
36
  end
39
37
 
40
38
  context "a pattern starting in a slash" do
41
39
  it "should return only root glob matches" do
42
40
  files = files(%w{foo/bar bar/foo})
43
- Globby.select(%w{/foo}, files).should == %w{foo/bar}
41
+ expect(Globby.select(%w{/foo}, files)).to eq %w{foo/bar}
44
42
  end
45
43
  end
46
44
 
47
45
  context "a pattern with a *" do
48
46
  it "should return matching files" do
49
47
  files = files(%w{foo/bar foo/baz})
50
- Globby.select(%w{*z}, files).should == %w{foo/baz}
48
+ expect(Globby.select(%w{*z}, files)).to eq %w{foo/baz}
51
49
  end
52
50
 
53
51
  it "should not glob slashes" do
54
52
  files = files(%w{foo/bar foo/baz})
55
- Globby.select(%w{foo*bar}, files).should == []
53
+ expect(Globby.select(%w{foo*bar}, files)).to eq []
56
54
  end
57
55
  end
58
56
 
59
57
  context "a pattern with a ?" do
60
58
  it "should return matching files" do
61
59
  files = files(%w{foo/bar foo/baz})
62
- Globby.select(%w{b?z}, files).should == %w{foo/baz}
60
+ expect(Globby.select(%w{b?z}, files)).to eq %w{foo/baz}
63
61
  end
64
62
 
65
63
  it "should not glob slashes" do
66
64
  files = files(%w{foo/bar foo/baz})
67
- Globby.select(%w{foo?bar}, files).should == []
65
+ expect(Globby.select(%w{foo?bar}, files)).to eq []
68
66
  end
69
67
  end
70
68
 
71
69
  context "a pattern with a **" do
72
70
  it "should match directories recursively" do
73
71
  files = files(%w{foo/bar foo/baz foo/c/bar foo/c/c/bar})
74
- Globby.select(%w{foo/**/bar}, files).should == %w{foo/bar foo/c/bar foo/c/c/bar}
72
+ expect(Globby.select(%w{foo/**/bar}, files)).to eq %w{foo/bar foo/c/bar foo/c/c/bar}
75
73
  end
76
74
  end
77
75
 
78
76
  context "a pattern with bracket expressions" do
79
77
  it "should return matching files" do
80
78
  files = files(%w{boo fob f0o foo/bar poo/baz})
81
- Globby.select(%w{[e-g][0-9[:alpha:]][!b]}, files).should == %w{f0o foo/bar}
79
+ expect(Globby.select(%w{[e-g][0-9[:alpha:]][!b]}, files)).to eq %w{f0o foo/bar}
82
80
  end
83
81
  end
84
82
  end
@@ -92,4 +90,4 @@ describe Globby do
92
90
  }.uniq.sort
93
91
  Globby::GlObject.new files, dirs
94
92
  end
95
- end
93
+ end
metadata CHANGED
@@ -1,15 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: globby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
5
- prerelease:
4
+ version: 0.1.2
6
5
  platform: ruby
7
6
  authors:
8
7
  - Jon Jensen
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2014-01-15 00:00:00.000000000 Z
11
+ date: 2016-06-15 00:00:00.000000000 Z
13
12
  dependencies: []
14
13
  description: find files using .gitignore-style globs
15
14
  email: jenseng@gmail.com
@@ -18,37 +17,36 @@ extensions: []
18
17
  extra_rdoc_files: []
19
18
  files:
20
19
  - LICENSE.txt
21
- - Rakefile
22
20
  - README.md
21
+ - Rakefile
22
+ - lib/globby.rb
23
23
  - lib/globby/glob.rb
24
24
  - lib/globby/globject.rb
25
25
  - lib/globby/result.rb
26
- - lib/globby.rb
27
26
  - spec/gitignore_spec.rb
28
27
  - spec/globby_spec.rb
29
28
  homepage: http://github.com/jenseng/globby
30
29
  licenses: []
30
+ metadata: {}
31
31
  post_install_message:
32
32
  rdoc_options: []
33
33
  require_paths:
34
34
  - lib
35
35
  required_ruby_version: !ruby/object:Gem::Requirement
36
- none: false
37
36
  requirements:
38
- - - ! '>='
37
+ - - ">="
39
38
  - !ruby/object:Gem::Version
40
39
  version: 1.8.7
41
40
  required_rubygems_version: !ruby/object:Gem::Requirement
42
- none: false
43
41
  requirements:
44
- - - ! '>='
42
+ - - ">="
45
43
  - !ruby/object:Gem::Version
46
44
  version: 1.3.5
47
45
  requirements: []
48
46
  rubyforge_project:
49
- rubygems_version: 1.8.25
47
+ rubygems_version: 2.2.5
50
48
  signing_key:
51
- specification_version: 3
52
- summary: .gitignore-style file globber
49
+ specification_version: 4
50
+ summary: ".gitignore-style file globber"
53
51
  test_files: []
54
52
  has_rdoc: