Class: ThinReports::Report::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/thinreports/report/base.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Base

Returns a new instance of Base.

Parameters:

  • options (Hash) (defaults to: {})

Options Hash (options):

  • :layout (String, nil) — default: nil


92
93
94
95
# File 'lib/thinreports/report/base.rb', line 92

def initialize(options = {})
  @internal = Report::Internal.new(self, options)
  @start_page_number = 1
end

Instance Attribute Details

#internalThinReports::Report::Internal (readonly)



9
10
11
# File 'lib/thinreports/report/base.rb', line 9

def internal
  @internal
end

#start_page_numberInteger (readonly)

Returns:

  • (Integer)


12
13
14
# File 'lib/thinreports/report/base.rb', line 12

def start_page_number
  @start_page_number
end

Class Method Details

.create(options = {}) {|report| ... } ⇒ ThinReports::Report::Base

Parameters:

  • options (Hash) (defaults to: {})

Options Hash (options):

  • :layout (String, nil) — default: nil

Yields:

  • (report)

Yield Parameters:

Returns:



20
21
22
23
24
25
26
27
28
29
# File 'lib/thinreports/report/base.rb', line 20

def create(options = {}, &block)
  unless block_given?
    raise ArgumentError, '#create requires a block'
  end
  report = new(options)
  block_exec_on(report, &block)
  report.finalize
  
  report
end

.generate(type, options = {}, &block) ⇒ String .generate(options = {}, &block) ⇒ String

Overloads:

  • .generate(type, options = {}, &block) ⇒ String

    Parameters:

    • type (Symbol)
    • options (Hash) (defaults to: {})

    Options Hash (options):

    • :report (Hash) — default: {}

      Options for Report.

    • :generator (Hash) — default: {}

      Options for Generator.

  • .generate(options = {}, &block) ⇒ String

    Parameters:

    • options (Hash) (defaults to: {})

    Options Hash (options):

    • :report (Hash) — default: {}

      Options for Report.

    • :generator (Hash) — default: {}

      Options for Generator.

Yields:

  • (report)

Yield Parameters:

Returns:

  • (String)

Raises:

  • (ArgumentError)


43
44
45
46
47
48
49
50
# File 'lib/thinreports/report/base.rb', line 43

def generate(*args, &block)
  raise ArgumentError, '#generate requires a block' unless block_given?
  
  report_opts, generator_opts = extract_options!(args)
  
  report = create(report_opts, &block)
  report.generate(*args.push(generator_opts))
end

.generate_file(type, filename, options = {}, &block) ⇒ void .generate_file(filename, options = {}, &block) ⇒ void

Deprecated.

Please use the #generate method with :filename option instead.

This method returns an undefined value.

Yields:

  • (report)

Yield Parameters:

Raises:

  • (ArgumentError)

See Also:



60
61
62
63
64
65
66
67
# File 'lib/thinreports/report/base.rb', line 60

def generate_file(*args, &block)
  raise ArgumentError, '#generate_file requires a block' unless block_given?

  report_opts, generator_opts = extract_options!(args)
  
  report = create(report_opts, &block)
  report.generate_file(*args.push(generator_opts))
end

Instance Method Details

#add_blank_page(options = {}) ⇒ ThinReports::Core::BlankPage Also known as: blank_page

Parameters:

  • options (Hash) (defaults to: {})

Options Hash (options):

  • :count (Boolean) — default: true

Returns:



131
132
133
# File 'lib/thinreports/report/base.rb', line 131

def add_blank_page(options = {})
  internal.add_page(Core::BlankPage.new(options[:count]))
end

#default_layoutThinReports::Layout::Base



149
150
151
# File 'lib/thinreports/report/base.rb', line 149

def default_layout
  internal.default_layout
end

#eventsThinReports::Report::Events



207
208
209
# File 'lib/thinreports/report/base.rb', line 207

def events
  internal.events
end

#finalizevoid

This method returns an undefined value.



223
224
225
# File 'lib/thinreports/report/base.rb', line 223

def finalize
  internal.finalize
end

#finalized?Boolean

Returns:

  • (Boolean)


229
230
231
# File 'lib/thinreports/report/base.rb', line 229

def finalized?
  internal.finalized?
end

#generate(type, options = {}) ⇒ String #generate(options = {}) ⇒ String

Examples:

Generate the PDF data

report.generate(:pdf) #=> "%PDF-1.4...."

# Or, you can omit the type of generator
report.generate

Create the PDF file (Since v0.8)

report.generate(:pdf, :filename => 'foo.pdf')

Overloads:

  • #generate(type, options = {}) ⇒ String

    Specify the generator type.

    Parameters:

    • type (Symbol)

    Returns:

    • (String)
  • #generate(options = {}) ⇒ String

    Using the default generator type.

    Parameters:

    • options (Hash) (defaults to: {})

      ({})

    Returns:

    • (String)


168
169
170
171
172
173
174
175
176
177
178
179
# File 'lib/thinreports/report/base.rb', line 168

def generate(*args)
  options = args.last.is_a?(::Hash) ? args.pop : {}
  type = args.first || ThinReports.config.generator.default
  filename = options.delete(:filename)
  generator = ThinReports::Generator.new(type, self, options)

  if filename
    generator.generate_file(filename)
  else
    generator.generate
  end
end

#generate_file(type, filename, options = {}) ⇒ void #generate_file(filename, options = {}) ⇒ void

Deprecated.

Please use the #generate method with :filename option instead.

Overloads:

  • #generate_file(type, filename, options = {}) ⇒ void

    This method returns an undefined value.

    Parameters:

  • #generate_file(filename, options = {}) ⇒ void

    This method returns an undefined value.

    Parameters:

    • filename (String)


189
190
191
192
193
194
195
196
197
198
# File 'lib/thinreports/report/base.rb', line 189

def generate_file(*args)
  warn '[DEPRECATION] The #generate_file method is deprecated. ' +
       'Please use the #generate(:filename => "filename") instead.'

  options = args.last.is_a?(::Hash) ? args.pop : {}
  args.unshift(ThinReports.config.generator.default) if args.size == 1
  type, filename = args

  generate(type, options.merge(:filename => filename))
end

#layout(id = nil) ⇒ ThinReports::Layout::Base

Parameters:

  • id (Symbol, nil) (defaults to: nil)

    Return the default layout if nil (see #default_layout).

Returns:



139
140
141
142
143
144
145
146
# File 'lib/thinreports/report/base.rb', line 139

def layout(id = nil)
  if id
    internal.layout_registry[id] ||
      raise(ThinReports::Errors::UnknownLayoutId)
  else
    internal.default_layout
  end
end

#list(id = nil, &block) ⇒ Object



201
202
203
204
# File 'lib/thinreports/report/base.rb', line 201

def list(id = nil, &block)
  start_new_page if page.nil? || page.finalized?
  page.list(id, &block)
end

#pageThinReports::Core::Page?

Returns:



212
213
214
# File 'lib/thinreports/report/base.rb', line 212

def page
  internal.page
end

#page_countInteger

Returns:

  • (Integer)


217
218
219
# File 'lib/thinreports/report/base.rb', line 217

def page_count
  internal.page_count
end

#start_new_page(options = {}) {|page| ... } ⇒ ThinReports::Core::Page

Parameters:

  • options (Hash) (defaults to: {})

Options Hash (options):

  • :layout (String, Symbol) — default: nil
  • :count (Boolean) — default: true

Yields:

Yield Parameters:

Returns:



119
120
121
122
123
124
125
126
# File 'lib/thinreports/report/base.rb', line 119

def start_new_page(options = {}, &block)
  unless layout = internal.load_layout(options.delete(:layout))
    raise ThinReports::Errors::NoRegisteredLayoutFound
  end
  
  page = internal.add_page(layout.init_new_page(self, options))
  block_exec_on(page, &block)
end

#start_page_number_from(page_number) ⇒ Object

Parameters:

  • page_number (Integer)


98
99
100
# File 'lib/thinreports/report/base.rb', line 98

def start_page_number_from(page_number)
  @start_page_number = page_number
end

#use_layout(layout, options = {}) {|config| ... } ⇒ void

This method returns an undefined value.

Parameters:

  • layout (String)

    path to layout-file.

  • options (Hash) (defaults to: {})

Options Hash (options):

  • :default (Boolean) — default: true
  • :id (Symbol) — default: nil

Yields:

  • (config)

Yield Parameters:



109
110
111
# File 'lib/thinreports/report/base.rb', line 109

def use_layout(layout, options = {}, &block)
  internal.register_layout(layout, options, &block)
end