class Twb::Analysis::DocumentedFieldsMarkdownEmitter

Attributes

docFileName[R]

Public Class Methods

new() click to toggle source
# File lib/twb/analysis/DocumentedFieldsMarkdownEmitter.rb, line 25
def initialize
  # puts ""
end

Public Instance Methods

processTwb(twbName) click to toggle source
# File lib/twb/analysis/DocumentedFieldsMarkdownEmitter.rb, line 29
def processTwb twbName
  @twb = Twb::Workbook.new twbName
  @docFileName = '.ttdoc' + @twb.name + '.DocumentedFields.md'
  @docFile     = File.open(@docFileName,'w')
  @docFile.puts "## #{@twb.name}"
  dss = @twb.datasources
  @docFile.puts "#{dss.length} Data Source#{(dss.length>1) ? 's' : ''}"
  @docFile.puts " "
  dss.each do |ds|
    @docFile.puts "- #{ds.uiname}"
  end
  @docFile.puts " "
  dss.each do |ds|
    @docFile.puts "### #{ds.uiname}"
    columnFields = ds.columnFields  #.sort_by { |fldName,calc| fldName }
    columnFields.each do |field|
      commentLines = field.comment 
      calculation  = field.calcField
      # puts "\n#{field.uiname}"
      # puts "Comment? #{commentLines}"
      # puts "Calc   ? #{calculation}"
      @docFile.puts "\n##### #{field.uiname} "
      unless commentLines.nil?
        commentLines.each do |line|
          @docFile.puts "###### #{line}"
        end
      end
      unless calculation.nil?
        @docFile.puts "```"
          @docFile.puts calculation.formulaResolved
          @docFile.puts "\n -- Fields  --" unless calculation.calcFields.empty?
          refFields = SortedSet.new
          calculation.calcFields.each do |cf|
            fds =  if cf.dataSourceRef == :remote then "<<#{cf.dataSource}>>" else '' end
            refFields.add "#{cf.uiName} \t #{fds}"
          end
          refFields.each do |rf|
            @docFile.puts "    #{rf}"
          end
          @docFile.puts "```"
      end
    end
  end
end