Module: Export

Defined in:
lib/cless/export.rb

Defined Under Namespace

Modules: CSV, TeX

Constant Summary collapse

Format =
{}

Class Method Summary collapse

Class Method Details

.export(file, format, lines, data, display, opts = {}) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/cless/export.rb', line 8

def self.export(file, format, lines, data, display, opts = {})
  current_line = nil
  mod = Format[format] or raise "Unsupported format '#{format}'"
  line_s = lines.begin
  line_e = lines.end
  if !line_s.kind_of?(Integer) || !line_e.kind_of?(Integer) ||
      line_s > line_e || line_s < 0
    raise "Invalid line range '#{lines}'"
  end

  current_line = data.line + 1
  nb_lines = line_e - line_s + 1
  data.goto_line(line_s)
  data.cache_fill(nb_lines)
  nb_col = data.sizes.size

  col_start = display.col_start
  hidden = display.col_hidden
  hidden.map! { |x| x - col_start }   # Make it 0 based
  col_show = (0...nb_col).to_a - hidden
  nb_col = col_show.size

  lines = proc  { |b|
    data.lines(nb_lines) { |l|
      next if l.kind_of?(IgnoredLine)
      a = l.values_at(*col_show)
      b.call(a)
    }
  }
  class << lines
    def each(&b); self.call(b); end
  end
  
  columns = if display.col_names
              display.col_headers.values_at(*col_show)
            else
              nil
            end
  
  
  File.open(file, "w") { |fd|
    mod.export(fd, nb_col, lines, columns, opts)
    return fd.pos
  }
ensure
  if current_line
    data.clear_cache
    data.goto_line(current_line)
  end
end

.questions(format) ⇒ Object



4
5
6
# File 'lib/cless/export.rb', line 4

def self.questions(format)
  Format[format]::Questions rescue nil
end