Class: RIO::Match::Entry::Selector

Inherits:
Object
  • Object
show all
Defined in:
lib/rio/entrysel.rb

Direct Known Subclasses

SelectorClassic

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(entry_sel) ⇒ Selector

Returns a new instance of Selector.



164
165
166
167
168
# File 'lib/rio/entrysel.rb', line 164

def initialize(entry_sel)
  @entry_sel = entry_sel
  @sel = @nosel = nil
  process_entry_sel() if @entry_sel
end

Instance Attribute Details

#noselObject (readonly)

Returns the value of attribute nosel.



163
164
165
# File 'lib/rio/entrysel.rb', line 163

def nosel
  @nosel
end

#selObject (readonly)

Returns the value of attribute sel.



163
164
165
# File 'lib/rio/entrysel.rb', line 163

def sel
  @sel
end

Instance Method Details

#callstr(func, *args) ⇒ Object



234
235
236
# File 'lib/rio/entrysel.rb', line 234

def callstr(func,*args)
  self.class.to_s+'['+self.to_s+']'+'.'+func.to_s+'('+args.join(',')+')'
end

#entry_sel_argsObject



169
170
171
# File 'lib/rio/entrysel.rb', line 169

def entry_sel_args() 
  @entry_sel['args']
end

#inspectObject



211
212
213
214
215
216
217
# File 'lib/rio/entrysel.rb', line 211

def inspect()
  str = sprintf('#<Selector:0x%08x',self.object_id)
  str += " @sel=#{@sel.inspect}"
  str += " @nosel=#{@nosel.inspect}"
  str += ">"
  str
end

#match?(el) ⇒ Boolean

Returns:

  • (Boolean)


231
232
233
# File 'lib/rio/entrysel.rb', line 231

def match?(el)
  yes?(el) and not no?(el)
end

#process_entry_selObject

Raises:

  • (RuntimeError)


181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
# File 'lib/rio/entrysel.rb', line 181

def process_entry_sel()
  sel_args = self.entry_sel_args
  raise RuntimeError, "Internal error: entry_sel_args not set" unless sel_args
  if something_selected?
    @sel = Match::Entry::Sels.new 
    @sel << Match::Entry::List.new(:true?,*sel_args['entries']) if sel_args.has_key?('entries')
    @sel << Match::Entry::List.new(:file?,*sel_args['files']) if sel_args.has_key?('files')
    @sel << Match::Entry::List.new(:dir?,*sel_args['dirs']) if sel_args.has_key?('dirs')
  end
  if something_skipped?
    @nosel = Match::Entry::Sels.new 
    if sel_args.has_key?('skipentries')
      @nosel << Match::Entry::List.new(:true?,*sel_args['skipentries'])
    end
    if sel_args.has_key?('skipfiles')
      @nosel << Match::Entry::List.new(:file?,*sel_args['skipfiles'])
      unless sel_args['skipfiles'].empty? or sel_args.has_key?('files')
        @sel ||= Match::Entry::Sels.new 
        @sel << Match::Entry::List.new(:file?)
      end
    end
    if sel_args.has_key?('skipdirs')
      @nosel << Match::Entry::List.new(:dir?,*sel_args['skipdirs'])
      unless sel_args['skipdirs'].empty? or sel_args.has_key?('dirs')
        @sel ||= Match::Entry::Sels.new 
        @sel << Match::Entry::List.new(:dir?)
      end
    end
  end
end

#skip_type(skip_args) ⇒ Object



178
179
180
# File 'lib/rio/entrysel.rb', line 178

def skip_type(skip_args)
  
end

#something_selected?Boolean

Returns:

  • (Boolean)


172
173
174
# File 'lib/rio/entrysel.rb', line 172

def something_selected?
  %w[entries files dirs].any? { |k| entry_sel_args.has_key?(k) }
end

#something_skipped?Boolean

Returns:

  • (Boolean)


175
176
177
# File 'lib/rio/entrysel.rb', line 175

def something_skipped?
  %w[skipentries skipfiles skipdirs].any? { |k| entry_sel_args.has_key?(k) }
end