Module: Doing::Pager
- Defined in:
- lib/doing/pager.rb
Overview
Pagination
Class Attribute Summary collapse
-
.paginate ⇒ Object
Boolean determines whether output is paginated.
Class Method Summary collapse
-
.external_pager(text) ⇒ Object
External pager using IO.popen for optimal performance and UX.
-
.page(text) ⇒ Object
Page output.
Class Attribute Details
.paginate ⇒ Object
Boolean determines whether output is paginated
10 11 12 |
# File 'lib/doing/pager.rb', line 10 def paginate @paginate ||= false end |
Class Method Details
.external_pager(text) ⇒ Object
External pager using IO.popen for optimal performance and UX
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/doing/pager.rb', line 41 def external_pager(text) pager = which_pager Doing.logger.debug('Pager:', "Using external pager: #{pager}") begin IO.popen(pager, 'w') do |io| io.write(text) io.close_write end rescue SystemCallError => e # Fallback to direct output if pager fails puts text Doing.logger.debug('Pager:', "Pager failed, using direct output: #{e}") end end |
.page(text) ⇒ Object
Page output. If @paginate is false, just dump to STDOUT
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/doing/pager.rb', line 24 def page(text) unless @paginate puts text return end # Smart pagination: skip pager for small outputs if should_skip_pager?(text) puts text return end # Use external pager (IO.popen for best performance and UX) external_pager(text) end |