class DxDirGrep

Public Class Methods

new(pathx='.', path: pathx, ext: '.txt') click to toggle source
# File lib/dxdir_grep.rb, line 10
def initialize(pathx='.', path: pathx, ext: '.txt')
  
  @path = path
  dtx = DirToXML.new path
  @dx = dtx.select_by_ext(ext)
  
end

Public Instance Methods

grep(pattern='') click to toggle source
# File lib/dxdir_grep.rb, line 18
def grep(pattern='')
  
  a = @dx.sort_by_lastmodified.reverse.inject([]) do |r,x|

    name = x[:name]

    s = File.read(File.join(@path, name))
    i = s.scrub =~ /#{pattern}/mi
    
    if i then
      i_start = (i - 30) > 0 ? i - 30 : 0
      r << {name: name, preview: s.slice(i_start, 100)}
    else
      r
    end
  end

  dx = Dynarex.new json_out: false
  dx.import a
  
  return dx
end