hx 0.14.0 → 0.15.0
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/lib/hx.rb +7 -9
- data/lib/hx/backend/rawfiles.rb +3 -3
- data/lib/hx/path.rb +57 -1
- data/spec/selector_spec.rb +18 -0
- metadata +4 -4
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.15.0
|
data/lib/hx.rb
CHANGED
@@ -158,9 +158,7 @@ module CircumfixPath
|
|
158
158
|
@input = input
|
159
159
|
@prefix = options[:prefix]
|
160
160
|
@suffix = options[:suffix]
|
161
|
-
|
162
|
-
suffix = Regexp.quote(@suffix.to_s)
|
163
|
-
@regexp = Regexp.new("^#{prefix}(.*)#{suffix}$")
|
161
|
+
@regexp = Path.make_circumfix_re(@prefix, @suffix)
|
164
162
|
end
|
165
163
|
|
166
164
|
private
|
@@ -184,9 +182,9 @@ class AddPath
|
|
184
182
|
end
|
185
183
|
|
186
184
|
def each_entry_path(selector)
|
187
|
-
|
188
|
-
|
189
|
-
yield path
|
185
|
+
selector = selector.assume_circumfix(@prefix, @suffix)
|
186
|
+
@input.each_entry_path(selector) do |path|
|
187
|
+
yield add_circumfix(path)
|
190
188
|
end
|
191
189
|
self
|
192
190
|
end
|
@@ -208,9 +206,9 @@ class StripPath
|
|
208
206
|
end
|
209
207
|
|
210
208
|
def each_entry_path(selector)
|
211
|
-
|
212
|
-
|
213
|
-
yield path
|
209
|
+
selector = selector.elide_circumfix(@prefix, @suffix)
|
210
|
+
@input.each_entry_path(selector) do |path|
|
211
|
+
yield strip_circumfix(path)
|
214
212
|
end
|
215
213
|
self
|
216
214
|
end
|
data/lib/hx/backend/rawfiles.rb
CHANGED
@@ -32,8 +32,8 @@ class RawFiles
|
|
32
32
|
|
33
33
|
def initialize(input, options)
|
34
34
|
@entry_dir = Hx.get_pathname(options, :entry_dir)
|
35
|
-
@
|
36
|
-
@
|
35
|
+
@postedit_cmd = options[:postedit_cmd]
|
36
|
+
@postedit_cmd = @postedit_cmd.split(/\s+/) if @postedit_cmd
|
37
37
|
end
|
38
38
|
|
39
39
|
def path_to_pathname(path) ; @entry_dir + path ; end
|
@@ -54,7 +54,7 @@ class RawFiles
|
|
54
54
|
end
|
55
55
|
text = yield text
|
56
56
|
Hx.write_file(pathname, text)
|
57
|
-
system *(@
|
57
|
+
system *(@postedit_cmd + [pathname]) if @postedit_cmd
|
58
58
|
self
|
59
59
|
end
|
60
60
|
|
data/lib/hx/path.rb
CHANGED
@@ -38,7 +38,15 @@ module Selector
|
|
38
38
|
end
|
39
39
|
|
40
40
|
def ~()
|
41
|
-
Negation.
|
41
|
+
Negation.build(self)
|
42
|
+
end
|
43
|
+
|
44
|
+
def assume_circumfix(prefix, suffix)
|
45
|
+
AssumeCircumfix.build(self, prefix, suffix)
|
46
|
+
end
|
47
|
+
|
48
|
+
def elide_circumfix(prefix, suffix)
|
49
|
+
ElideCircumfix.build(self, prefix, suffix)
|
42
50
|
end
|
43
51
|
end
|
44
52
|
|
@@ -124,6 +132,10 @@ end
|
|
124
132
|
class Negation
|
125
133
|
include Selector
|
126
134
|
|
135
|
+
def self.build(selector)
|
136
|
+
new(selector)
|
137
|
+
end
|
138
|
+
|
127
139
|
def initialize(selector)
|
128
140
|
@selector = selector
|
129
141
|
end
|
@@ -133,5 +145,49 @@ class Negation
|
|
133
145
|
end
|
134
146
|
end
|
135
147
|
|
148
|
+
class AssumeCircumfix
|
149
|
+
include Selector
|
150
|
+
|
151
|
+
def self.build(selector, prefix, suffix)
|
152
|
+
case selector
|
153
|
+
when All; ALL
|
154
|
+
else; new(selector, prefix, suffix)
|
155
|
+
end
|
156
|
+
end
|
157
|
+
|
158
|
+
def initialize(selector, prefix, suffix)
|
159
|
+
@selector = selector
|
160
|
+
@prefix = prefix
|
161
|
+
@suffix = suffix
|
162
|
+
end
|
163
|
+
|
164
|
+
def accept_path?(path)
|
165
|
+
@selector.accept_path?("#{@prefix}#{path}#{@suffix}")
|
166
|
+
end
|
167
|
+
end
|
168
|
+
|
169
|
+
def self.make_circumfix_re(prefix, suffix)
|
170
|
+
quoted_prefix = Regexp.quote(prefix.to_s)
|
171
|
+
quoted_suffix = Regexp.quote(suffix.to_s)
|
172
|
+
@circumfix_re = /^#{quoted_prefix}(.*)#{quoted_suffix}$/
|
173
|
+
end
|
174
|
+
|
175
|
+
class ElideCircumfix
|
176
|
+
include Selector
|
177
|
+
|
178
|
+
def self.build(selector, prefix, suffix)
|
179
|
+
new(selector, prefix, suffix)
|
180
|
+
end
|
181
|
+
|
182
|
+
def initialize(selector, prefix, suffix)
|
183
|
+
@selector = selector
|
184
|
+
@circumfix_re = Path.make_circumfix_re(prefix, suffix)
|
185
|
+
end
|
186
|
+
|
187
|
+
def accept_path?(path)
|
188
|
+
!!(path =~ @circumfix_re and @selector.accept_path?($1))
|
189
|
+
end
|
190
|
+
end
|
191
|
+
|
136
192
|
end
|
137
193
|
end
|
data/spec/selector_spec.rb
CHANGED
@@ -83,3 +83,21 @@ describe "Hx::Path::Selector conjunctions" do
|
|
83
83
|
(Hx::Path::ALL & Hx::Path::ALL).should equal(Hx::Path::ALL)
|
84
84
|
end
|
85
85
|
end
|
86
|
+
|
87
|
+
describe "Hx::Path::Selector" do
|
88
|
+
it "should be able to elide specific circumfixes" do
|
89
|
+
filter = Hx::Path.parse_pattern("foo").elide_circumfix("XXX", "YYY")
|
90
|
+
filter.should accept_path("XXXfooYYY")
|
91
|
+
filter.should_not accept_path("foo")
|
92
|
+
filter.should_not accept_path("XXXfoo")
|
93
|
+
filter.should_not accept_path("fooYYY")
|
94
|
+
end
|
95
|
+
|
96
|
+
it "should be able to assume specific circumfixes" do
|
97
|
+
filter = Hx::Path.parse_pattern("XXXfooYYY").assume_circumfix("XXX", "YYY")
|
98
|
+
filter.should accept_path("foo")
|
99
|
+
filter.should_not accept_path("XXXfoo")
|
100
|
+
filter.should_not accept_path("fooYYY")
|
101
|
+
filter.should_not accept_path("XXXfooYYY")
|
102
|
+
end
|
103
|
+
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hx
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 35
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
8
|
+
- 15
|
9
9
|
- 0
|
10
|
-
version: 0.
|
10
|
+
version: 0.15.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- MenTaLguY
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-03-
|
18
|
+
date: 2011-03-06 00:00:00 -08:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|